.NET 7下无法为ILoggerFactory或Serilog添加文件日志的问题
.NET7 日志写入文件:解决方法不存在的错误
问题1:Serilog 的 WriteTo.File 和 RollingInterval 未识别
原因
缺少Serilog文件输出对应的NuGet包,WriteTo.File扩展方法和RollingInterval枚举都定义在Serilog.Sinks.File包中。
解决步骤
- 安装NuGet包:
Install-Package Serilog.Sinks.File # 或使用.NET CLI dotnet add package Serilog.Sinks.File - 在代码中添加必要的命名空间引用:
using Serilog; using Serilog.Sinks.File; - 修正后的代码:
Log.Logger = new LoggerConfiguration() .WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day) .CreateLogger();
问题2:ILoggingBuilder 没有 AddFile 方法
原因
.NET官方的Microsoft.Extensions.Logging并未内置AddFile扩展方法,需要安装第三方集成包。
解决步骤
- 安装NuGet包:
Install-Package Serilog.Extensions.Logging.File # 或使用.NET CLI dotnet add package Serilog.Extensions.Logging.File - 添加命名空间引用:
using Serilog.Extensions.Logging.File; - 修正后的代码:
var factory = LoggerFactory.Create(builder => builder.AddConfiguration(conf) .AddFile("logs/log.txt"));
ASP.NET Core API 推荐配置方式
如果是ASP.NET Core项目,更推荐使用Serilog.AspNetCore包完成端到端的日志集成,无需手动处理LoggerFactory:
- 安装包:
dotnet add package Serilog.AspNetCore - 在
Program.cs中配置:using Serilog; var builder = WebApplication.CreateBuilder(args); // 整合Serilog到ASP.NET Core宿主 builder.Host.UseSerilog((context, loggerConfig) => { loggerConfig.WriteTo.File("logs/log.txt", rollingInterval: RollingInterval.Day); }); // 注册其他服务... var app = builder.Build(); // 配置中间件... app.Run();
内容的提问来源于stack exchange,提问作者NomadicDeveloper
相关产品推荐
相关产品推荐

