加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – .net core 2.1 log4net with multip environment

发布时间:2020-12-15 22:54:56 所属栏目:百科 来源:网络整理
导读:我正在研究.net核心2.1应用程序并尝试合并log4net以将日志写入文件.我可以让它工作,但无法弄清楚如何写入日志将在不同位置的不同环境(即测试/生产). log4net.config log4net root appender-ref ref="console" / appender-ref ref="file" / /root appender na
我正在研究.net核心2.1应用程序并尝试合并log4net以将日志写入文件.我可以让它工作,但无法弄清楚如何写入日志将在不同位置的不同环境(即测试/生产).

log4net.config

<log4net>
    <root>
        <appender-ref ref="console" />
    <appender-ref ref="file" />
  </root>
  <appender name="console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %level - %message%newline" />
    </layout>
    <threshold value="Info" />
  </appender>
  <appender name="file" type="log4net.Appender.RollingFileAppender">
    <file value="C:logsTestLocationMyLog.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="5" />
    <maximumFileSize value="100MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %level - %message%newline" />
    </layout>
    <threshold value="Info" />
  </appender>
</log4net>

我的startup.cs配置方法是:

loggerFactory.AddLog4Net();

我将记录器注入我的控制器:

public MyController(ILogger<MyController> logger)
 {
     _logger = logger;
 }

并在我的控制器中使用它:

_logger.LogInformation("My logger worked!!!!!!!!!!!");

一切正常.我希望我可以添加一个新的log4net.config文件,并将其命名为log4net.Production.config,应用程序将使用不同的配置文件,具体取决于它所在的环境,如appnsettings.json.相反,它只使用我的默认log4net.config文件.

是否可以为appsettings.json等每个环境提供多个log4net.config文件?

解决方法

在您的Startup.cs上,您可以像这样配置它:

public Startup(IConfiguration configuration,IHostingEnvironment env)
{
    FileInfo fInfo;

    if (File.Exists(Path.Combine(env.ContentRootPath,$"log4net.{env.EnvironmentName}.xml")))
        fInfo = env.GetLog4NetFile($"log4net.{env.EnvironmentName}.xml");
    else
        fInfo = env.GetLog4NetFile($"log4net.xml");

    XmlConfigurator.Configure(fInfo);
    LogManager.GetLogger(DefaultLoggerName)?.Info($"Environment={env.EnvironmentName}"); 
    Configuration = configuration;
}

然后,您可以创建一个类似log4net.Production.xml的文件,并根据使用的环境对其进行自定义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读