.NET 5控制台应用中通过LoggerFactory使用Serilog AddFile无法写入文件且无报错
- 先确认你安装的NuGet包为
Serilog.Extensions.Logging.File,不要安装其他同名不兼容的扩展包。 - 检查项目内
appsettings.json的文件属性:右键文件选择「属性」,将「复制到输出目录」选项改为「如果较新则复制」,避免程序运行时找不到配置文件导致配置失效。 - 你当前硬编码传入文件名调用
AddFile时没有指定最小日志级别,该扩展默认的最低输出级别为Information,且会受全局Logging配置的过滤规则限制,你可以显式指定级别覆盖默认规则:
.AddFile("log.txt", minimumLevel: LogLevel.Trace)
- 如果你要读取
appsettings.json中的配置,取消你代码中AddFile参数的注释,改为传入配置节点即可:
.AddFile(Configuration.GetSection("Logging"))
同时确认你的appsettings.json配置结构正确,示例如下:
{ "Logging": { "LogLevel": { "Default": "Trace", "Microsoft": "Warning" }, "File": { "Path": "log.txt", "Append": true, "MinLevel": "Trace" } } }
- 检查日志生成路径:直接传入相对路径
log.txt时,文件会生成在程序的运行输出目录(对应bin/Debug/[.NET版本号]/文件夹),而非项目根目录,你可以打开输出目录查找,或者临时改为绝对路径测试,比如AddFile(@"C:\Temp\log.txt")验证功能是否正常。 - 调整Serilog自诊代码的位置:自诊启用代码必须放在所有日志相关配置的最前面才能捕获初始化阶段的错误,你可以把
Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));移动到ConfigurationBuilder初始化之前,运行后查看调试窗口的输出即可获取具体报错信息。
内容的提问来源于stack exchange,提问作者Brian Jenkins
相关产品推荐
相关产品推荐

