C# 我是否可以向ILogger添加自定义方法或使用环境变量轻松修改log4net配置?
我使用本机ILOGER而不是ILog,因为它是本机日志接口,我可以使用环境变量配置日志,就像我可以使用其他appsettings变量一样——这对我来说非常重要 问题不是日志级别的1:1映射,这很好,但我担心这可能会造成混乱 我在Program.cs中设置log4net如下:C# 我是否可以向ILogger添加自定义方法或使用环境变量轻松修改log4net配置?,c#,asp.net-core,log4net,asp.net-core-3.1,C#,Asp.net Core,Log4net,Asp.net Core 3.1,我使用本机ILOGER而不是ILog,因为它是本机日志接口,我可以使用环境变量配置日志,就像我可以使用其他appsettings变量一样——这对我来说非常重要 问题不是日志级别的1:1映射,这很好,但我担心这可能会造成混乱 我在Program.cs中设置log4net如下: .ConfigureLogging((context, logging) => { logging.ClearProviders(); logging.AddConfiguration(context.
.ConfigureLogging((context, logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(context.Configuration.GetSection("Logging"));
logging.AddDebug();
logging.AddConsole();
logging.AddLog4Net(
context.Configuration.GetSection("Log4NetCore")
.Get<Log4NetProviderOptions>()
);
});
如果我想临时更改日志级别(例如对prod中的临时调试有用),我只需设置一个env vars,就像我对所有其他应用程序设置所做的那样:
"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覆盖日志设置