ASP.NET Core应用发布后Serilog不写入自定义日志到文件问题求助
问题解决方案
问题1:自定义_logger.LogInformation日志未写入文件
- 原因:默认日志级别配置限制了自定义命名空间的日志输出
解决方案:- 检查项目中
appsettings.json和对应环境配置文件(如appsettings.Production.json)的Logging节点,确保自定义代码所在命名空间的日志级别不高于Information,示例配置如下:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning", // 替换为你自己项目的根命名空间 "YourProjectNamespace": "Information" } } }- 调用
AddFile时显式指定最低输出日志级别,避免全局配置覆盖:
builder.AddFile("Logs/myapp-{Date}.txt", LogLevel.Information); - 检查项目中
问题2:应用发布后无日志文件生成
- 原因:多为工作目录不匹配、权限不足导致
解决方案:- 修正日志路径为绝对路径,避免Windows服务默认工作目录指向系统目录导致的写入失败,修改代码如下:
.ConfigureLogging((hostingContext, builder) => { // 基于应用根目录拼接日志路径 var logDir = Path.Combine(hostingContext.HostingEnvironment.ContentRootPath, "Logs"); Directory.CreateDirectory(logDir); var logPath = Path.Combine(logDir, "myapp-{Date}.txt"); builder.AddFile(logPath, LogLevel.Information); })- 给发布目录开放运行身份的读写权限:如果应用以Windows服务运行,右键发布文件夹→安全→添加服务运行账号(如
LOCAL SERVICE、NETWORK SERVICE或自定义账号),授予其读取和执行、写入权限。 - 确认发布包中包含了生产环境的配置文件,且日志级别配置符合要求,没有被更高优先级的配置覆盖。
内容的提问来源于stack exchange,提问作者Khuzaima jamil
相关产品推荐
相关产品推荐

