【问题标题】:Load only one appender instead of all仅加载一个附加程序而不是全部
【发布时间】:2015-10-30 12:11:05
【问题描述】:

我目前正在开发一个控制台 C# 应用程序,我必须记录两种类型的数据:

  • 一般应用程序的所有步骤 (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>

【问题讨论】:

    标签: c# file logging console log4net


    【解决方案1】:

    以您当前的配置,您无法做到这一点。如您所见,log4net 会在调用XmlConfigurator.Configure() 时创建日志文件。

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

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 2015-03-24
      • 1970-01-01
      • 2017-10-25
      相关资源
      最近更新 更多