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

如何在.NET Core 3.1的Azure Functions中将Serilog配置为默认日志提供程序

解决步骤

1. 确认安装必要NuGet包

首先检查项目已安装以下依赖:

  • Serilog.Extensions.Logging 用于对接.NET官方日志抽象
  • Serilog.Sinks.ApplicationInsights 对应你代码中的Application Insights输出配置
  • Serilog.Enrichers.ExceptionDetails 对应你代码中WithExceptionDetails扩充方法

2. 补充日志提供程序注册逻辑

你当前代码仅初始化了Serilog全局Logger实例,未将其注入到Azure Functions的日志系统中,需要在Log.Logger = ...CreateLogger();之后添加如下代码:

builder.Services.AddLogging(loggingBuilder =>
{
    // 可选:清空默认注册的日志提供程序,避免重复输出日志
    loggingBuilder.ClearProviders();
    // 注册Serilog为日志提供程序
    loggingBuilder.AddSerilog(dispose: true);
});

如果你使用的是.NET隔离进程模型的Azure Functions,无需调用上述AddLogging方法,直接在主机构建链中添加UseSerilog()即可。

3. 调整host.json过滤规则

为了避免Azure Functions宿主的默认日志规则拦截Serilog生成的日志,需要修改host.json的日志级别配置:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "default": "Trace",
      "Microsoft": "Warning",
      "Host.Aggregator": "Warning",
      "Host.Results": "Information"
    }
  }
}

此处的日志级别可根据实际需求调整,不要设置过高的默认过滤阈值,避免日志被提前拦截。

4. 验证配置

完成上述修改后,你既可以通过函数构造函数注入的ILogger<T>实例写日志,也可以直接使用Log.Logger静态类写日志,两种方式的日志都会按照你配置的Serilog规则输出到控制台和Application Insights,同时携带你配置的扩充属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:27:05