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

Azure Functions多触发器场景下Serilog Tracing启用异常排查

针对Serilog Tracing在Azure Functions中的问题解决方案

1. HTTP触发器无traceparent不生成追踪日志

当前配置里opts.IncomingTraceParent = IncomingTraceParent.Trust仅在请求携带traceparent头时才会触发追踪。要实现无该头时自动生成根追踪,修改配置如下:

.Instrument.AspNetCoreRequests(opts =>
{
    opts.IncomingTraceParent = IncomingTraceParent.CreateIfMissing;
})

此设置会在请求无traceparent时自动创建根Activity,确保Postman直接调用也能生成追踪日志。

2. Timer触发器自定义Activity无法记录

核心原因

自定义Activity对应的ActivitySource未被Serilog Tracing监听,且Timer这类非HTTP触发器的宿主默认不会创建根Activity,导致自定义Activity成为孤立节点未被捕获。

解决步骤

  • 步骤1:规范自定义Activity的ActivitySource使用
    在Timer函数代码中显式声明并使用专属ActivitySource:
    private static readonly ActivitySource _timerActivitySource = new ActivitySource("YourApp.TimerFunctions");
    
    [FunctionName("TimerTrigger")]
    public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
    {
        using var activity = _timerActivitySource.StartActivity("Timer func running", ActivityKind.Internal);
        // 函数业务逻辑代码
    }
    
  • 步骤2:在Serilog配置中监听该ActivitySource
    修改ActivityListenerConfiguration,添加对自定义ActivitySource的监听:
    var listener = new ActivityListenerConfiguration()
        .Instrument.SqlClientCommands()
        .Instrument.AspNetCoreRequests(opts =>
        {
            opts.IncomingTraceParent = IncomingTraceParent.CreateIfMissing;
        })
        .ListenToActivitySource("YourApp.TimerFunctions") // 与上面的ActivitySource名称保持一致
        .TraceToSharedLogger();
    
  • 步骤3:确保ActivityListener生效
    配置完成后调用Install()完成监听注册:
    listener.Install();
    

3. Event Grid触发器追踪适配

与Timer触发器解决方案逻辑一致:

  • 为Event Grid触发器的自定义逻辑创建专属ActivitySource
  • 在Serilog配置中添加对该ActivitySource的监听
  • 触发器执行逻辑中启动Activity时关联正确的ActivitySource

额外说明:Azure Functions的非HTTP触发器(Timer、Event Grid等)执行上下文无默认根Activity,自定义Activity需作为根Activity启动,上述配置已覆盖此场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 15:17:13