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

ASP.NET Core 6中Serilog配置无效,控制台无日志输出

ASP.NET Core 6 Serilog控制台无输出的解决方法

1. 确认已安装必要NuGet包

缺少依赖包是常见问题,需安装以下包:

Install-Package Serilog.AspNetCore
Install-Package Serilog.Settings.Configuration
Install-Package Serilog.Sinks.Console

2. 修正Program.cs中的Serilog初始化逻辑

ASP.NET Core 6采用顶级语句,必须先初始化Serilog,再创建WebApplicationBuilder,并替换默认日志系统:

using Serilog;

// 加载配置文件
var config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();

// 初始化Serilog
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(config)
    .CreateLogger();

try
{
    Log.Information("应用启动中");
    var builder = WebApplication.CreateBuilder(args);

    // 关键:替换默认日志为Serilog
    builder.Host.UseSerilog();

    // 常规服务配置
    builder.Services.AddControllers();

    var app = builder.Build();

    // 中间件配置
    app.UseHttpsRedirection();
    app.UseAuthorization();
    app.MapControllers();

    app.Run();
}
catch (Exception ex)
{
    Log.Fatal(ex, "应用意外终止");
}
finally
{
    Log.CloseAndFlush();
}

3. 优化appsettings.json配置(可选但推荐)

现有配置可补充Using节点明确指定控制台接收器,避免潜在加载问题:

"Serilog": {
  "Using": [ "Serilog.Sinks.Console" ],
  "MinimumLevel": {
    "Default": "Information",
    "Override": {
      "Microsoft.AspNetCore": "Warning",
      "System": "Warning"
    }
  },
  "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
  "WriteTo": [
    { 
      "Name": "Console",
      "Args": {
        "theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console"
      }
    }
  ]
}

4. 验证日志输出逻辑

  • 确保输出的日志级别不低于配置的MinimumLevel.Default(即Information及以上),比如使用_logger.LogInformation("测试日志")而非LogDebug
  • 若测试Microsoft.AspNetCore命名空间下的日志,因配置中Override设为Warning,仅Warning及以上级别会输出,可临时改为Information验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:25:27