You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core应用发布后Serilog不写入自定义日志到文件问题求助

问题解决方案

问题1:自定义_logger.LogInformation日志未写入文件

  • 原因:默认日志级别配置限制了自定义命名空间的日志输出
    解决方案:
    1. 检查项目中appsettings.json和对应环境配置文件(如appsettings.Production.json)的Logging节点,确保自定义代码所在命名空间的日志级别不高于Information,示例配置如下:
    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning",
          // 替换为你自己项目的根命名空间
          "YourProjectNamespace": "Information"
        }
      }
    }
    
    1. 调用AddFile时显式指定最低输出日志级别,避免全局配置覆盖:
    builder.AddFile("Logs/myapp-{Date}.txt", LogLevel.Information);
    

问题2:应用发布后无日志文件生成

  • 原因:多为工作目录不匹配、权限不足导致
    解决方案:
    1. 修正日志路径为绝对路径,避免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);
    })
    
    1. 给发布目录开放运行身份的读写权限:如果应用以Windows服务运行,右键发布文件夹→安全→添加服务运行账号(如LOCAL SERVICE、NETWORK SERVICE或自定义账号),授予其读取和执行、写入权限。
    2. 确认发布包中包含了生产环境的配置文件,且日志级别配置符合要求,没有被更高优先级的配置覆盖。

内容的提问来源于stack exchange,提问作者Khuzaima jamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:54:04