C# 我是否可以向ILogger添加自定义方法或使用环境变量轻松修改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.

我使用本机ILOGER而不是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>()
    );
});
如果我想临时更改日志级别(例如对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覆盖日志设置