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

.NET Core应用部署Azure App Service后NLog无法生成日志如何解决

Azure App Service 部署后NLog日志不生成排查方案

1. 路径合法性与权限校验

  • Azure App Service Windows运行环境默认仅开放D:\home目录下的写入权限,若你的NLog配置中指定了D:\Logs等非home目录路径,会因权限不足写入失败,建议将日志路径统一指向D:\home\site\wwwroot\logs或其子目录。
  • 可通过Kudu控制台进入应用运行环境手动验证路径写入权限:访问https://<你的应用名称>.scm.azurewebsites.net,进入「Debug Console」→「CMD」,导航到目标日志路径下执行mkdir test或echo test > test.txt验证写入权限。

2. NLog 配置有效性校验

  • 确认NLog配置文件(如nlog.config)的项目属性设置为复制到输出目录:始终复制,避免发布时配置文件未被打包到部署包中。
  • 开启NLog内部诊断日志排查自身报错:在NLog配置根节点添加属性internalLogLevel="Warn" internalLogFile="D:\home\site\wwwroot\logs\nlog-internal.log",重新发布后查看该内部日志,可定位到配置加载失败、写入权限不足等NLog内部错误。
  • 避免使用硬编码的相对路径,建议通过环境变量拼接日志路径,示例配置:
<target xsi:type="File" name="allfile" fileName="${environment:HOME}\site\wwwroot\logs\app-${shortdate}.log"
        layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />

3. Azure 平台配置校验

  • 进入Azure门户对应App Service的「应用服务日志」配置页,确认已开启文件系统日志(短期存储,最长保留12小时)或Blob存储日志(长期存储),日志级别设置为你需要采集的最低等级(如Verbose)。
  • 检查App Service的「配置」→「应用程序设置」,确认没有配置覆盖NLog相关的日志等级、路径等参数,避免配置项拼写错误导致参数读取失败。

4. 代码逻辑校验

  • 确认.NET Core应用的NLog注册顺序正确,避免日志Provider被覆盖:.NET 6+版本推荐在应用构建前加载NLog配置,示例代码如下:
// 预先加载NLog配置
var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
try
{
    var builder = WebApplication.CreateBuilder(args);
    // 清空默认日志Provider
    builder.Logging.ClearProviders();
    builder.Logging.SetMinimumLevel(LogLevel.Trace);
    // 注入NLog
    builder.Host.UseNLog();
    // 其他服务注册逻辑
    var app = builder.Build();
    // 中间件配置逻辑
    app.Run();
}
catch (Exception ex)
{
    logger.Error(ex, "应用启动异常");
    throw;
}
finally
{
    NLog.LogManager.Shutdown();
}
  • 确认日志等级过滤规则没有冲突,比如App Service配置的全局日志等级高于NLog配置的输出等级,会导致日志被过滤无法输出。

内容的提问来源于stack exchange,提问作者Bharat Kwatra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:27:02