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

.NET Core中如何用Serilog创建日志类?请解释其生成逻辑

你的Serilog日志实例生成过程详解

第一步:加载配置文件

你写的这段代码首先完成了配置文件的读取:

var configuration = new ConfigurationBuilder()
           .AddJsonFile("appsettings.json")
           .Build();
  • ConfigurationBuilder是.NET配置系统的核心类,用来整合各类配置源
  • .AddJsonFile("appsettings.json")指定从项目根目录的appsettings.json文件加载配置数据
  • .Build()执行配置构建,返回包含所有配置信息的IConfiguration对象,供后续Serilog读取使用

第二步:构建Serilog日志实例

接下来的代码创建了可直接使用的日志记录器:

var logger = new LoggerConfiguration().MinimumLevel.Debug()
                .ReadFrom.Configuration(configuration)
                .CreateLogger();
  • LoggerConfiguration是Serilog的配置入口,用来定义日志的行为规则
  • .MinimumLevel.Debug()设置日志的最低记录级别为Debug,意味着所有级别≥Debug的日志(Debug、Information、Warning、Error、Fatal)都会被捕获
  • .ReadFrom.Configuration(configuration)告知Serilog从之前加载的IConfiguration对象中读取日志输出的具体配置
  • .CreateLogger()根据前面定义的所有规则,生成最终可用的ILogger实例,之后你就可以通过这个实例调用logger.Debug()、logger.Error()等方法记录日志

第三步:appsettings.json中的Serilog配置解析

你的配置文件里的Serilog节点定义了日志的输出规则:

{
  "Serilog": {
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "C:\\Users\\m_243\\OneDrive\\Desktop\\Adaa\\HRSoultion\\API\\APISerilogs\\AppLogs.log.txt",
          "rollingInterval": "Month"
        }
      }
    ]
  }
}
  • "WriteTo"是Serilog的输出目标配置节点,数组中的每个元素对应一个日志输出终端(Sink)
  • "Name": "File"指定使用文件输出Sink(需要提前安装Serilog.Sinks.File NuGet包,否则该配置无法生效)
  • "Args"是传递给File Sink的参数:
    • "path"定义了日志文件的存储路径和初始文件名
    • "rollingInterval": "Month"设置日志文件按月滚动,每个月会自动生成新的日志文件,旧文件会自动添加月份标识重命名,避免单个文件体积过大

整体流程总结

  1. 读取appsettings.json中的所有配置数据
  2. 初始化Serilog配置构建器,设置最低日志级别
  3. 让Serilog从加载的配置中读取输出目标的详细规则
  4. 生成符合配置要求的日志记录器实例,供业务代码调用记录日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:45:41