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

无法在Azure Log Stream中查看Web API自定义Trace日志问题

解决Azure App Service中看不到System.Diagnostics.Trace自定义日志的问题

嘿,我来帮你搞定这个日志不显示的麻烦!你现在遇到的问题是用System.Diagnostics.Trace.TraceInformation写的日志没出现在Azure的Log Stream里,虽然已经开了Application Logging (Filesystem)且级别设为Information对吧?原因在于Trace类的日志默认并没有和ASP.NET Core的日志系统集成,所以Azure的日志捕获机制抓不到它。下面给你两种解决办法:

方法一:改用ASP.NET Core标准的ILogger(推荐)

这是最符合ASP.NET Core框架规范的做法,也能完美适配Azure的日志系统,步骤很简单:

  1. 在你的ValuesController中注入ILogger依赖:
private readonly ILogger<ValuesController> _logger;

public ValuesController(ILogger<ValuesController> logger)
{
    _logger = logger;
}
  1. 把原来的Trace日志代码替换成ILogger的调用:
// 替换掉 System.Diagnostics.Trace.TraceInformation("in get...");
_logger.LogInformation("in get...");
  1. 重新发布你的应用到Azure,调用api/values/5接口后,去Log Stream里切换到Application Logs标签,就能看到这条自定义日志啦。

方法二:保留Trace代码,添加日志桥接配置

如果你不想修改现有代码,那需要配置让Trace的日志转发到ASP.NET Core的日志系统里,这样Azure才能捕获到:

  1. 打开项目的Program.cs(如果是老版本.NET Core就是Startup.cs),添加Trace日志的桥接配置:
    对于.NET 6+的Program.cs:
var builder = WebApplication.CreateBuilder(args);

// 添加Trace源监听器,将Trace日志转发到ILogger
builder.Logging.AddTraceSource(
    new SourceSwitch("TraceSource", "Information"), 
    new ConsoleTraceListener()
);

// 其他原有配置代码...

var app = builder.Build();

// 中间件配置...

app.Run();
  1. 重新发布应用后,Trace.TraceInformation的日志就会被转发到Azure的应用日志中,你就能在Log Stream里看到了。

额外检查点

  • 确认Azure App Service的Log Stream页面切换到了Application Logs标签,别选错成Web Server Logs或者其他标签啦。
  • 再次确认Application Logging (Filesystem)的日志级别是Information,如果设成Warning或更高,Information级别的日志会被过滤掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:23:10