ASP.NET Core 6中Serilog+Seq日志失效,提示找不到方法问题排查
问题解决:ASP.NET Core 6 Razor网站Serilog+Seq日志失效
错误原因分析
- 配置缺失命名空间引用:
appsettings.json中Serilog.Using数组为空,Serilog无法识别扩展包提供的WithMachineName、Seq等方法。 - WASM环境不兼容:WebAssembly运行在浏览器中,无法获取机器名(MachineName)和进程ID(ProcessId),这两个Enricher在该环境下无效。
- 潜在版本兼容问题:部分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
相关产品推荐
相关产品推荐

