首页 > 解决方案 > log4net - 指定要创建的文件。不要创建所有附加程序

问题描述

我的解决方案中有一个项目,它使用 Hangfire 运行多个不同的后台作业。我希望能够根据正在运行的后台作业指定要使用 Log4Net 创建的不同日志文件。

例如; 作业 1 对数据库进行验证检查,作业 2 将数据从 3rd 方应用程序同步到另一个数据库

我在配置文件中指定了几个附加程序,但是当我运行作业 1 或作业 2 时会创建所有日志文件。我希望只为每个作业创建一个日志文件,例如,当我运行作业 1 时,会创建日志文件 job1.xml 而不是job2.xml 反之亦然

有没有办法只指定附加程序?在下面的示例中,我希望仅创建文件 c:\logging\testing\jobs3-%date{ddMMMyyyy-hhmmss}.xml 而不是其他文件

XmlConfigurator.Configure();
log4net.ILog log = log4net.LogManager.GetLogger("xmlFile2");

=====配置文件========

    <appender name="file" type="log4net.Appender.RollingFileAppender">
      <file value="c:\logging\job1.log" />
      <appendToFile value="true" />
      <rollingStyle value="Once" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date - [%M] %level %logger - %message%newline" />
      </layout>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    </appender>
    <appender name="xmlFile" type="log4net.Appender.FileAppender">
      <file type="log4net.Util.PatternString" value="c:\logging\testing\job2-%date{ddMMMyyyy-hhmmss}.xml" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
        <locationInfo value="true" />
      </layout>
      <param name="Encoding" value="utf-8" />
    </appender>
    <appender name="xmlFile2" type="log4net.Appender.FileAppender">
      <file type="log4net.Util.PatternString" value="c:\logging\testing\jobs3-%date{ddMMMyyyy-hhmmss}.xml" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
        <locationInfo value="true" />
      </layout>
      <param name="Encoding" value="utf-8" />
    </appender>
  </log4net>

标签: log4net

解决方案


推荐阅读