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

如何添加Serilog作为非唯一日志提供方并读取appSettings.json配置?

解决方案

要同时满足保留原有日志提供方和从appSettings.json读取Serilog配置这两个需求,你需要结合AddSerilog()方法与手动加载配置的方式,具体步骤如下:

1. 安装必要NuGet包

确保已安装Serilog.AspNetCore和Serilog.Settings.Configuration,这两个包分别负责ASP.NET Core集成和JSON配置读取。

2. 正确初始化代码

不要使用会替换所有日志提供方的builder.Host.UseSerilog(),改用以下方式配置:

// 从appSettings.json加载Serilog配置
var loggerConfig = new LoggerConfiguration()
    .ReadFrom.Configuration(builder.Configuration);

// 创建Serilog Logger实例
var logger = loggerConfig.CreateLogger();

// 将Serilog添加为日志提供方,保留原有提供方
builder.Logging.AddSerilog(logger, dispose: true);

3. appSettings.json配置示例

确保配置文件中包含Serilog节点,示例如下:

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      { "Name": "File", "Args": { "path": "logs/log-.txt", "rollingInterval": "Day" } }
    ]
  }
}

关键说明

  • builder.Logging.AddSerilog()本身不会自动读取配置,必须先通过LoggerConfiguration.ReadFrom.Configuration()加载appSettings中的配置,创建实例后再传入该方法。
  • dispose: true参数用于确保应用关闭时正确释放Serilog资源。
  • 这种配置方式会保留ASP.NET Core原生的日志提供方(如Console、Debug),Serilog作为额外的提供方接收日志输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:07:36