當您在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類別。這是我無法弄清楚的。 –