只加载一个appender而不是全部

时间:2015-10-30 12:11:06

标签: c# file logging console log4net

我目前正在使用控制台C#app,我必须记录两种类型的数据:

  • 应用程序的所有步骤(AppLog)
  • 我从服务(MachineLog)获取的所有信息

MachineLog需要2个属性,但是当我启动应用程序时,我没有定义它们,我之前有一些工作要做。但我需要从开始登录AppLog,所以在开始时我使用:

log4net.Config.XmlConfigurator.Configure();

它创建了C:\ DNC \ Suivi \ Logs.txt但也创建了C:\ DNC \ Suivi \(null)\(null)-logs.txt

有没有办法只加载/配置AppLog及以后的MachineLog?

我尝试向Configure()添加参数,但都失败了。

我的App.config是:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>

  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="AppLog" />
    </root>
    <logger name="Machine" additivity="false">
      <level value="ALL" />
      <appender-ref ref="MachineLog" />
    </logger>
    <appender name="AppLog" type="log4net.Appender.RollingFileAppender">
      <file value="C:\DNC\Suivi\Logs.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <appender name="MachineLog" type="log4net.Appender.RollingFileAppender" >
      <file type="log4net.Util.PatternString" value="C:\DNC\Suivi\%property{Machine}\%property{ID}-logs.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>

1 个答案:

答案 0 :(得分:0)

使用当前配置,您无法执行此操作。如您所见,log4net将在调用XmlConfigurator.Configure()时创建日志文件。

为此,你必须以编程方式完成至少一些工作,一旦你知道文件的位置 - set the file name at runtime很容易,所以你可以在配置中有一个占位符文件名,然后当值已知时,在运行时设置正确的名称。这意味着空占位符文件将存在 - 唯一的方法是create the whole appender at runtime