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

.NET 6 ASP.NET Core中Serilog无法生成日志文件问题求助

解决Serilog未生成日志文件的问题

1. 安装文件输出所需的Serilog包

你当前仅配置了控制台输出,需要安装Serilog.Sinks.File包来支持文件日志写入:

dotnet add package Serilog.Sinks.File

2. 修正Serilog配置(Program.cs)

你的代码存在两个关键问题:一是启动日志Log.Information("Starting web application")在Logger配置前调用,会使用默认Logger而非Serilog;二是未添加文件输出的配置项。修改后的完整代码如下:

using Serilog;

// 先配置Serilog Logger,再输出启动日志
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console() // 保留控制台输出
    .WriteTo.File(
        path: "./logs/log-.txt", // 日志文件路径,自动生成logs文件夹
        rollingInterval: RollingInterval.Day, // 按天滚动生成新日志文件
        retainedFileCountLimit: 7, // 保留最近7天的日志文件
        outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}" // 自定义日志格式
    )
    .CreateLogger();

Log.Information("Starting web application");

var builder = WebApplication.CreateBuilder(args);

// 注册服务
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// 让ASP.NET Core使用Serilog替换默认日志系统
builder.Host.UseSerilog();

var app = builder.Build();

// 配置HTTP请求管道
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

// 启动应用并确保日志资源正确释放
try
{
    app.Run();
    Log.Information("Application stopped successfully");
}
catch (Exception ex)
{
    Log.Fatal(ex, "Application crashed unexpectedly");
}
finally
{
    Log.CloseAndFlush();
}

3. 验证日志文件生成

启动应用后,访问/api/User/test触发日志输出,你会在应用根目录的logs文件夹下看到按日期命名的日志文件,文件内会包含控制台输出的Doing something...,以及应用启动、退出相关的日志内容。

额外注意事项

  • 日志路径:相对路径默认指向应用工作目录,可通过Directory.GetCurrentDirectory()确认具体位置,或直接使用绝对路径避免路径混淆。
  • 权限检查:确保应用程序对日志目录有读写权限,生产环境部署时尤其需要注意。
  • 日志级别:默认Serilog记录Information及以上级别日志,若需更详细的调试日志,可在配置中添加.MinimumLevel.Debug()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:43:01