Serilog控制台应用MinimumLevel设置不够低时无法写入文本文件问题
问题根因
- Serilog 未显式配置最低日志级别时,默认仅输出
Information及更高等级(Warning、Error、Fatal)的日志,你代码中写入的Debug级别的日志会被直接过滤,不会写入文件。 - 如果触发了数据库创建分支,但对应的
Log.Information条目也未写入,还需要检查控制台项目和Logging.Core类库的Serilog相关依赖版本是否一致,版本不一致会导致Log.Logger实例不共享,配置无法生效。
修复方案
修改Logging.Core类库中的Logging类,显式指定最低日志级别即可:
public static class Logging { public static void Configure() { ILogger logger = new LoggerConfiguration() // 显式设置最低记录日志级别为Debug,Debug及以上级别日志都会被输出 .MinimumLevel.Debug() .WriteTo.File(path: "log.txt") .CreateLogger(); Log.Logger = logger; } }
可选优化建议
- 若需要单独控制文件输出的日志级别,可以单独给File sink设置级别限制:
.WriteTo.File(path: "log.txt", restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Information) - 开发阶段可以额外添加控制台输出sink,方便实时查看日志输出:
.WriteTo.Console() - 确保控制台主项目也安装了与类库版本一致的
Serilog、Serilog.Sinks.FileNuget包,避免依赖冲突。
内容的提问来源于stack exchange,提问作者ProfK
相关产品推荐
相关产品推荐

