log4net - MassTransit - 对 MT 日志使用不同的 Log4Net 文件

标签 log4net masstransit

我目前有一个使用 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/

相关文章:

c# - Log4Net - 记录到 Azure Blob 存储不会创建日志

c# - log4net 无法创建日志文件,发布到服务器时

c# - MassTransit 4 单元测试消费者超时

azure - 大众交通消费者没有接到电话

asp.net-mvc - Log4Net 未使用 UnityContainer 登录 .NET WebApi 项目

c# - 按大小滚动时将日期附加到文件名

asp.net-core - MassTransit 抛出 System.MissingMethodException

c# - 如何在 Masstransit 发布中忽略命名空间

c# - 正在创建 log4net 日志但仍为空

c# - MassTransit RabbitMQ AspNetCore无法启动总线并注册接收端点