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

如何配置ASP.NET Core中Serilog实现日志文件按_001、_002序号依次命名

结论

完全可以实现该需求,Serilog的Serilog.Sinks.File sink原生支持按文件大小滚动生成带有序号后缀的日志文件,完全符合你要求的命名规则。

实现步骤

首先安装必要的NuGet包:

  • Serilog ASP.NET Core核心集成包:Serilog.AspNetCore
  • 文件写入sink包:Serilog.Sinks.File(最新稳定版已原生支持序号滚动命名规则)

方式1:代码硬编码配置

在项目启动文件Program.cs中直接配置Serilog规则即可:

using Serilog;

var builder = WebApplication.CreateBuilder(args);

// 初始化Serilog配置
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .WriteTo.File(
        path: "logs/myapp.log", // 基础日志文件前缀,不需要手动加序号占位符
        rollOnFileSizeLimit: true, // 开启按文件大小触发滚动规则
        fileSizeLimitBytes: 10 * 1024 * 1024, // 单个日志文件上限为10MB,可按需调整
        rollingInterval: RollingInterval.Infinite, // 不按时间周期滚动,仅按大小触发新文件生成
        retainedFileCountLimit: 30, // 最多保留30个历史日志文件,设为null则不限制保留数量
        outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
    )
    .CreateLogger();

// 替换ASP.NET Core默认日志组件为Serilog
builder.Host.UseSerilog();

// 其余服务注册逻辑
// ...

var app = builder.Build();

// 中间件配置逻辑
// ...

app.Run();

按以上配置生成的日志文件命名依次为myapp_001.log、myapp_002.log、myapp_003.log,完全符合需求。


方式2:通过appsettings.json配置(更推荐,无需修改代码即可调整规则)

  1. 先修改Program.cs的Serilog初始化逻辑,改为从配置文件读取规则:
using Serilog;

var builder = WebApplication.CreateBuilder(args);

// 从配置文件加载Serilog规则
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(builder.Configuration)
    .CreateLogger();

builder.Host.UseSerilog();

// 其余逻辑
// ...

var app = builder.Build();
app.Run();
  1. 在appsettings.json中添加Serilog配置段:
{
  "Serilog": {
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "logs/myapp.log",
          "rollOnFileSizeLimit": true,
          "fileSizeLimitBytes": 10485760,
          "rollingInterval": "Infinite",
          "retainedFileCountLimit": 30,
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
        }
      }
    ]
  }
}

注意事项
  • 如果需要同时按时间+大小滚动,比如每天的日志按大小拆分,把rollingInterval改为对应值即可,比如Day,此时命名会变为myapp20240520_001.log,仍然保留序号后缀规则
  • fileSizeLimitBytes单位为字节,可根据业务需求调整大小上限
  • 如果需要保留所有历史日志,把retainedFileCountLimit设为null即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:45:04