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

ASP.NET Core 6中Serilog+Seq日志失效,提示找不到方法问题排查

问题解决:ASP.NET Core 6 Razor网站Serilog+Seq日志失效

错误原因分析

  1. 配置缺失命名空间引用:appsettings.json中Serilog.Using数组为空,Serilog无法识别扩展包提供的WithMachineName、Seq等方法。
  2. WASM环境不兼容:WebAssembly运行在浏览器中,无法获取机器名(MachineName)和进程ID(ProcessId),这两个Enricher在该环境下无效。
  3. 潜在版本兼容问题:部分Serilog扩展包版本可能与核心包存在兼容性差异。

分步解决方案

1. 修正Appsettings.json配置

  • 补全Using数组,指定需要加载的Serilog扩展命名空间
  • 移除WASM不支持的Enricher项

修改后的配置:

"serilog": {
    "Using": [
      "Serilog.Enrichers.Environment",
      "Serilog.Sinks.Console",
      "Serilog.Sinks.Seq"
    ],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "Enrich": [
      "FromLogContext"
    ],
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "Seq",
        "Args": {
          "serverUrl": "https://192.168.1.4:5341/"
        }
      }
    ]
  }

2. 调整NuGet包引用

  • 显式添加Serilog核心包,确保版本与扩展包兼容
  • 移除WASM环境无用的Serilog.Enrichers.Process包(可选,因为ProcessId无法在WASM中获取)

调整后的包引用示例:

<PackageReference Include="Serilog" Version="2.12.0" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.2.0" />
<PackageReference Include="Serilog.Enrichers.Thread" Version="3.1.0" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="5.0.1" />
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="3.4.0" />
<PackageReference Include="Serilog.Sinks.BrowserConsole" Version="1.0.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.Seq" Version="5.2.2" />

3. 优化Program.cs配置

由于已通过ReadFrom.Configuration读取了完整的Serilog配置,无需重复添加WriteTo.BrowserConsole()(若需保留,确保与配置中的Console Sink不冲突):

var builder = WebAssemblyHostBuilder.CreateDefault(args);
var levelSwitch = new LoggingLevelSwitch();

Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.ControlledBy(levelSwitch)
    .Enrich.WithProperty("InstanceId", Guid.NewGuid().ToString("n"))
    .ReadFrom.Configuration(builder.Configuration)
    .CreateLogger();

builder.Logging.AddProvider(new SerilogLoggerProvider());

4. 验证Seq服务器可访问性

确保Seq服务器的CORS配置允许前端WASM应用发起请求,否则会出现日志发送失败的情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:10:48