如何解决我可以向ILogger添加自定义方法还是可以轻松地使用环境变量修改log4net配置?
我使用的是本地ILogger而不是ILog,因为它是本地日志记录界面,并且我可以使用环境变量配置日志记录,就像我可以配置其他appsettings变量一样-这对我来说非常重要。
问题在于它不是与日志级别的1:1映射,这很好,但是我有点担心这可能会引起混乱。
我像这样在Program.cs中设置log4net:
.ConfigureLogging((context,logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(context.Configuration.GetSection("Logging"));
logging.AddDebug();
logging.AddConsole();
logging.AddLog4Net(
context.Configuration.GetSection("Log4NetCore")
.Get<Log4NetProviderOptions>()
);
});
我这样指向我的log4net文件,这样就很容易通过使用appsettings.<ENV>.json
来对每个环境进行配置,就像我对所有其他应用程序配置设置所做的一样:
"Log4NetCore": {
"Log4NetConfigFileName": "log4net.dev.config"
},"Logging": {
"LogLevel": {
"Default": "Trace","Microsoft": "Trace","Microsoft.Hosting.Lifetime": "Trace"
},
如果我想临时更改日志级别(例如,对生产中的临时调试很有用),我只需像其他所有应用程序设置一样设置环境变量:
Logging__LogLevel__Default
Logging__LogLevel__Microsoft
etc
这很好用,这意味着我可以将日志配置与其他应用配置一样对待。
我这样写日志,这就是问题所在
_logger.LogTrace("Log4net ignores this!");
_logger.LogDebug("Log4net writes this as DEBUG");
_logger.LogInformation("Log4net writes this as INFO");
_logger.LogWarning("Log4net writes this as WARN");
_logger.LogError("Log4net writes this as ERROR");
_logger.LogCritical("Log4net writes this as FATAL");
可能不大,但不是1:1映射。有没有办法添加我自己的方法?
或者可以使用Ilog界面并获得我现在拥有的所有这些功能:使用appsettings.json根据环境更改log4net配置,并像现在一样使用env vars覆盖日志设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。