c# - 没有为 LoggerProvider 设置 LogLevel
问题描述
我正在使用自定义 LoggerProvider 将日志写入文件。我的提供商运行良好,但我无法将日志级别设置为低于“信息”。
我loggerFactory.AddConsole(minLevel:LogLevel.Debug);
用于设置日志级别,但这不起作用。我可以看到所有事件——“警告”、“信息”等,但不能看到“调试”和“跟踪”。我的 ILogger 中的 MinLevel 是“信息”。
如何更改 LoggerProvider 中的级别?
我的日志记录器:
public class FileLogger : ILogger
{
private string filePath;
private object _lock = new object();
private readonly Func<string, LogLevel, bool> _filter;
public FileLogger(string path)
{
filePath = path;
}
public IDisposable BeginScope<TState>(TState state)
{
return null;
}
public bool IsEnabled(LogLevel logLevel)
{
return true;
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
if (formatter != null)
{
lock (_lock)
{
switch (logLevel)
{
case LogLevel.Debug:
{
File.AppendAllText(filePath + System.DateTime.Now.ToShortDateString() + "_DEBUG.log", DateTime.Now.ToString("T") + " " + formatter(state, exception) + Environment.NewLine);
break;
}
case LogLevel.Critical:
{
File.AppendAllText(filePath + System.DateTime.Now.ToShortDateString() + "_CRITICAL.log", DateTime.Now.ToString("T") + " " + formatter(state, exception) + Environment.NewLine);
break;
}
default:
{
File.AppendAllText(filePath + System.DateTime.Now.ToShortDateString() + ".log", DateTime.Now.ToString("T") + " " + formatter(state, exception) + Environment.NewLine);
break;
}
}
}
}
}
}
我的 ILoggerProvider:
public class FileLoggerProvider : ILoggerProvider
{
private string path;
public FileLoggerProvider(string _path)
{
path = _path;
}
public ILogger CreateLogger(string categoryName)
{
return new FileLogger(path);
}
public void Dispose()
{
}
}
和 LoggerExtensions:
public static class FileLoggerExtensions
{
public static ILoggerFactory AddFile(this ILoggerFactory factory,
string filePath)
{
factory.AddProvider(new Values.FileLoggerProvider(filePath));
return factory;
}
}
我在 configure.cs 中的代码
loggerFactory.AddFile("C:/log/");
loggerFactory.AddConsole(minLevel:LogLevel.Debug);
loggerFactory.AddDebug(minLevel: LogLevel.Debug);
var _logger = loggerFactory.CreateLogger("FileLogger");
解决方案
推荐阅读
- python - Numba 中的负动态索引
- solr - 如何提取
- javascript - Lightwidget 在我的 HTTPS 网站中不起作用
- php - PHP - 使用 ksort() 对关联数组进行排序
- angular - 在 Angular 6 中找不到带有 Angular Datatable 的模块 DataTablesModule
- android - 如何远程调试安装在远方用户手机上的 android 应用程序?
- json - 将字典数组编码为 JSON 时面临的问题
- c - 信号处理程序中的 Shellcode
- javascript - 将 Firebase Firestore 连接到 Heroku 上托管的 node.js 服务器时返回未定义的环境变量
- java - RandomStringUtils 在一次运行中生成相似的值。如何产生不一样的?