You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Rebus记录收发消息遇阻:Serilog无Debug日志问题

解决Rebus结合Serilog无法输出DEBUG级别消息日志的问题

核心问题分析

问题根源在于Serilog默认未开启DEBUG级别日志过滤,加上错误的Logger上下文配置,再配合Worker Service默认的日志规则,导致Rebus的消息追踪日志被完全拦截。

具体修复步骤

1. 正确配置Serilog最小日志级别

Serilog默认最小日志级别为Information,会直接丢弃DEBUG级日志。需显式开启全局DEBUG级别,同时可针对Rebus命名空间单独配置,避免其他库的DEBUG日志泛滥:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug() // 全局开启DEBUG级别
    .MinimumLevel.Override("Rebus", LogEventLevel.Debug) // 确保Rebus的日志级别为DEBUG
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information) // 抑制Microsoft库的DEBUG日志,减少冗余输出
    .WriteTo.ApplicationInsights(telConfig, TelemetryConverter.Traces, LogEventLevel.Debug)
    .Enrich.WithRebusCorrelationId("CorrelationId")
    .Enrich.WithProperty("Service", typeof(Program).Assembly.FullName) // 替换原错误的ForContext用法
    .CreateLogger();

2. 修正无效的ForContext用法

你原代码中Log.Logger.ForContext(...)不生效,因为该方法返回新的Logger实例,但未重新赋值给全局Log.Logger。改用Enrich.WithProperty添加服务名称属性才是正确方式。

3. 调整Worker Service日志过滤配置

在appsettings.json中,确保Logging节点未过滤DEBUG级日志:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Rebus": "Debug",
      "Microsoft": "Information"
    }
  }
}

4. 完善Rebus配置

确保Rebus启用消息追踪,并修正可能的笔误(你的Transport配置中写了wc.RabbitMq,但用的是Azure Service Bus,需替换为正确的连接字符串变量):

services.AddRebus((configure, provider) => {
    return configure
        .Logging(l => l.Serilog())
        .Transport(t => t.UseAzureServiceBus(wc.AzureServiceBusConnStr, wc.InputQueueName)) // 修正连接字符串变量名
        .Options(o => { 
            o.SetNumberOfWorkers(5);
            o.EnableMessageTracing(); // 显式启用消息追踪,确保生成出入日志
        })
        .Routing(r => r.TypeBased().MapAssemblyOf<CreateNewCustomerCommand>(wc.InputQueueName));
});

5. 测试ColouredConsole输出

如果切换到ColouredConsole,需确保输出级别设置为Debug:

.WriteTo.ColoredConsole(LogEventLevel.Debug)

验证方法

重启服务后发送/接收消息,查看Application Insights的Traces或ColouredConsole输出,应能看到Rebus生成的类似Received message {MessageId} with correlation id {CorrelationId}、Sent message {MessageId} to {QueueName}的DEBUG级日志。

内容的提问来源于stack exchange,提问作者Kenneth Jakobsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:10:30