2

我目前有一个使用 MassTransit 的 Windows 服务。此 Windows 服务使用 Log4Net 进行所有日志记录,现在我还想打开 Log4Net 进行内部 MassTransit 日志记录。但是我要:

  • 将 MT 日志记录到与 Windows 服务日志不同的文件中
  • 使用单个(现有)Log4Net 配置文件来配置两个输出

我已经sbc.UseLog4Net()在初始化总线时添加了,效果很好。但是,它正在写入与我的 Windows 服务日志相同的文件。

我确实意识到我可以sbc.UseLog4Net(@"log4net.config")使用单独的文件调用来完成此操作。

我真正想要的是能够修改我当前的 log4net.config 文件来完成这个。

4

1 回答 1

2

当然,这并不太难。在您的 log4net 配置中设置两个附加程序。

  <appender name="RollingFile1" type="log4net.Appender.FileAppender">
    <file value="log1.log" />
    <appendToFile value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
    </layout>
  </appender>
  <appender name="RollingFile2" type="log4net.Appender.FileAppender">
    <file value="log2.log" />
    <appendToFile value="false" />

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
    </layout>
  </appender>

然后只需设置两个记录器,每个附加器一个。

<logger name="MassTransit">
  <level value="INFO" />
  <appender-ref ref="RollingFile1" />
</logger>

<logger name="MyLogger">
  <level value="INFO" />
  <appender-ref ref="RollingFile2" />
</logger>

您只需将每个记录器指向正确的文件并收工。如果您对这些元素中的任何一个如何工作有疑问,我会查阅手册: http: //logging.apache.org/log4net/release/manual/configuration.html

于 2013-08-15T12:35:59.900 回答