.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.FileNuGet包,否则该配置无法生效)"Args"是传递给File Sink的参数:"path"定义了日志文件的存储路径和初始文件名"rollingInterval": "Month"设置日志文件按月滚动,每个月会自动生成新的日志文件,旧文件会自动添加月份标识重命名,避免单个文件体积过大
整体流程总结
- 读取
appsettings.json中的所有配置数据 - 初始化Serilog配置构建器,设置最低日志级别
- 让Serilog从加载的配置中读取输出目标的详细规则
- 生成符合配置要求的日志记录器实例,供业务代码调用记录日志
内容的提问来源于stack exchange,提问作者user123456
相关产品推荐
相关产品推荐

