我目前有一个使用 MassTransit 的 Windows 服务。此 Windows 服务使用 Log4Net 进行所有日志记录,现在我还想打开 Log4Net 进行内部 MassTransit 日志记录。但是,我想:
- 将 MT 日志记录到与 Windows 服务日志不同的文件中
- 使用单个(现有)Log4Net 配置文件来配置两个输出
我已经添加了sbc.UseLog4Net()
当初始化总线时,效果很好。但是,它正在写入与我的 Windows 服务日志相同的文件。
我确实意识到我可以调用 sbc.UseLog4Net(@"log4net.config")
用一个单独的文件来完成此操作。
我真正想要的是能够修改我当前的 log4net.config 文件来完成此任务。
最佳答案
当然,这并不太难。在 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 。
关于log4net - MassTransit - 对 MT 日志使用不同的 Log4Net 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243057/