如何在Azure门户捕获ASP.NET Core 6 AppService的ILogger.LogInformation日志
解决Azure上ASP.NET Core 6 Web API无法查看LogInformation日志的问题
你现在能看到LogError但看不到LogInformation,主要是Azure端日志级别配置、代码里日志配置未关联配置文件,或者AzureFileLogger默认级别限制导致的,给你几个解决步骤:
1. 检查Azure Portal里的诊断日志级别
- 登录Azure Portal,找到你的Web App,进入「监控」->「诊断设置」
- 确认「日志」区域的日志级别设置包含Information(直接选Verbose可覆盖所有级别)
- 同时检查「文件系统」日志的级别配置,确保没有只限制到Error级
2. 调整Program.cs的日志配置
原来的代码仅添加了AzureWebAppDiagnostics,但未关联appsettings里的LogLevel配置,修改ConfigureLogging部分:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseUrls("https://*:5001") .ConfigureLogging((context, logging) => { logging.AddAzureWebAppDiagnostics(); // 加载appsettings里的日志级别配置 logging.AddConfiguration(context.Configuration.GetSection("Logging")); }) .ConfigureServices(services => { services.Configure<AzureFileLoggerOptions>(options => { options.FileName = "my-azure-diagnostics-"; options.FileSizeLimit = 50 * 1024; options.RetainedFileCountLimit = 5; // 直接指定文件日志的级别 options.LogLevel = LogLevel.Information; }); }) .UseStartup<Startup>();
这样既会读取appsettings的配置,又明确设置了Azure文件日志的级别。
3. 确认日志注入和使用正确
确保在控制器/服务里正确注入ILogger
public class YourController : ControllerBase { private readonly ILogger<YourController> _logger; public YourController(ILogger<YourController> logger) { _logger = logger; } [HttpGet] public IActionResult Get() { _logger.LogInformation("触发了Get接口的Information日志"); return Ok(); } }
4. 验证日志查看路径
- 调用接口触发LogInformation后,进入Azure Web App的「开发工具」->「高级工具」(Kudu),打开
site/wwwroot/App_Data/logs目录,查看my-azure-diagnostics-开头的日志文件 - 或者在「监控」->「日志流」里实时查看日志输出
内容的提问来源于stack exchange,提问作者Faisal
相关产品推荐
相关产品推荐

