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

Azure Log Analytics中.NET 6应用StackTrace不完整问题求助

解决Azure App Service中.NET 6日志缺少完整堆栈跟踪的问题

以下是一步步排查和解决的方法:

  • 确保发布包包含符号文件(.pdb)
    行号信息依赖.pdb符号文件,Release模式下默认可能不嵌入或不包含。修改项目文件(.csproj)添加以下配置:

    <PropertyGroup>
      <DebugType>embedded</DebugType> <!-- 也可设置为full,embedded会将pdb嵌入dll,无需单独部署 -->
      <DebugSymbols>true</DebugSymbols>
    </PropertyGroup>
    

    重新发布应用到Azure App Service。

  • 配置Serilog输出完整异常堆栈
    记录异常时必须传递异常对象,而非仅记录错误消息。示例代码:

    try
    {
        // 可能抛出空引用异常的业务代码
    }
    catch (Exception ex)
    {
        Log.Error(ex, "执行操作时发生错误"); // 必须传入ex参数才能捕获完整堆栈
    }
    

    同时在Serilog控制台Sink配置中,确保输出模板包含完整异常信息:

    .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}")
    

    这样能保证控制台输出包含文件路径和行号的完整堆栈跟踪。

  • 调整Azure App Service的日志长度限制
    控制台日志默认有长度限制,过长的堆栈可能被截断。在App Service的「配置」→「应用设置」中添加或修改:

    • WEBSITE_LOG_MAX_MESSAGE_LENGTH:设置为更大的值(例如32768,即32KB),避免日志被截断。
  • 本地验证日志输出
    先在本地环境触发异常,查看控制台是否能输出带行号的完整堆栈。如果本地也没有,问题出在应用日志配置,而非Azure诊断设置。

  • 检查诊断设置的日志级别
    确保Azure诊断设置中,App Service Console Logs的日志级别设置为「Error」或更详细的级别(如Verbose),避免低级别日志被过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:13:18