首页 > 解决方案 > 同一解决方案上的两个 log4net 配置文件

问题描述

我有一个由多个项目组成的解决方案。它是一个桌面应用程序,我需要为这些项目设置两个单独的 log4net 配置,因为一个项目包含一个使用 log4net 本身的库。在 App.config 中配置的一个项目 log4net 和另一个项目中,它在 log4net.configuration 文件中配置。

下面是一个配置文件'''

<configSections>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="SmtpAppender"/>
      <appender-ref ref="LogFileAppender"/>
      <appender-ref ref="ColoredConsoleAppender"/>
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="D:\seperatelog.txt"/>
      <param name="AppendToFile" value="true"/>

      <rollingStyle value="Date" />
      <datePattern value="'On_'yyyy-MM-dd'.log'" />
      <appendToFile value="true" />
      <maxSizeRollBackups value="14" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
      </layout>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
      </layout>
    </appender>
    <appender name="ColoredConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
      </layout>
    </appender>
    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
      <to value="bobby.chopra@prcm.com"/>
      <from value="TagFileUploader@prcm.com"/>
      <subject value="TagFileUploader ERROR"/>
      <smtpHost value="prc-mn-ex01"/>
      <bufferSize value="512"/>
      <lossy value="true"/>
      <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ERROR"/>
      </evaluator>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
      </layout>
    </appender>
    <appender name="cargillsJournal" type="log4net.Appender.FileAppender">
      <param name="File" value="D:\BankInABoxffffff-log.txt"/>
      <param name="AppendToFile" value="true"/>
      <rollingStyle value="Date" />
      <datePattern value="'On_'yyyy-MM-dd'.log'" />
      <appendToFile value="true" />
      <maxSizeRollBackups value="14" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
      </layout>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
      </layout>
    </appender>
  </log4net>

其他配置文件如下

      <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="console" />     
    </root>
    <appender name="console" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date - %message%newline" />
      </layout>
    </appender>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="rolling-log.txt" />
      <appendToFile value="true" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="100" />
      <rollingStyle value="Size" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <header value="[Header]&#13;&#10;" />
        <footer value="[Footer]&#13;&#10;" />
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
      </layout>
    </appender>
    <logger name="LoggingExample">
      <!-- <appender-ref ref="B" /> -->
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
    </logger>
   </log4net>

这两个日志文件正确加载,但它们都写入同一个日志文件seperatelog.txt

我需要的是为这两个配置创建两个单独的文件。

标签: c#log4netlog4net-configurationlog4net-appender

解决方案


似乎您最好不要在 app.config 中而是在专用的 XML 文件中定义 log4net 配置。XML 文件的名称可以根据某种约定组成,因此您的项目将知道每个 log4net 配置 XML 专用于什么。

您将能够使用 XmlConfigurator.Configure(...) 函数配置您的 log4net


推荐阅读