当您在Azure门户中启用应用程序诊断时,您也可以选择Level。此设置允许您将捕获的信息过滤为信息,警告或错误信息。
详细级别装置日志系统将记录由应用程序产生的所有信息。
现在的问题是,Azure的日志有很多其他的日志详细信息从我不感兴趣的Mircosoft包来了。
你可以改变在Azure门户级别过滤日志您想要保存的内容。您可以随时在Azure门户上更改级别。与更改web.config文件不同,更改诊断日志级别不会回收应用程序运行的应用程序域。
我想从不属于我的类别中排除日志,只是我在配置的问题的第一行做了。
Azure Web App Logging扩展不支持按类别过滤日志。您可以创建一个新的记录器提供来实现此功能。
有3个步骤来完成它。
步骤1:添加需要实现ILogger接口的CustomLogger类。在本课中,我们可以按级别和类别过滤日志,并将日志消息保存到我们想要的任何地方。
public class CustomLogger : ILogger
{
private string _categoryName;
private Func<string, LogLevel, bool> _filter;
public CustomLogger(string categoryName, Func<string, LogLevel, bool> filter)
{
_categoryName = categoryName;
_filter = filter;
}
public IDisposable BeginScope<TState>(TState state)
{
return null;
}
public bool IsEnabled(LogLevel logLevel)
{
return (_filter == null || _filter(_categoryName, logLevel));
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
if (!IsEnabled(logLevel))
{
return;
}
if (formatter == null)
{
throw new ArgumentNullException(nameof(formatter));
}
var message = formatter(state, exception);
if (string.IsNullOrEmpty(message))
{
return;
}
message = [email protected]"Level: {logLevel} {message}";
if (exception != null)
{
message += Environment.NewLine + Environment.NewLine + exception.ToString();
}
//save message to any place you wanted
}
}
步骤2:添加这就需要实现ILoggerProvider接口CustomLoggerProvider类。在这个类中,我们将创建一个CustomerLogger实例来记录信息。
public class CustomLoggerProvider : ILoggerProvider
{
private readonly Func<string, LogLevel, bool> _filter;
public CustomLoggerProvider(Func<string, LogLevel, bool> filter)
{
_filter = filter;
}
public ILogger CreateLogger(string categoryName)
{
return new CustomLogger(categoryName, _filter);
}
public void Dispose()
{
}
}
步骤3:添加其用于CustomLoggerProvider实例添加到记录器工厂CustomLoggerExtensions类。
public static class CustomLoggerExtensions
{
public static ILoggerFactory AddCustom(this ILoggerFactory factory,
Func<string, LogLevel, bool> filter = null)
{
factory.AddProvider(new CustomLoggerProvider(filter));
return factory;
}
}
上面的步骤后,我们可以使用这个自定义记录器使用下面的代码。
loggerFactory.AddCustom((category, logLevel) => (category.Contains("WEBAPI") && logLevel >= LogLevel.Trace));
什么是在门户网站中设置的日志详细信息?您应该可以将该级别设置为警告。 – juunas
@juunas它设置为详细,我的意思是要问我如何控制水平BY类别。这是我无法弄清楚的。 –