.NET 8部署Azure后Log Stream无法查看日志的问题求助
解决Azure上ASP.NET Core Web应用Log Stream无日志的问题
一、修正Program.cs的日志配置方式
你当前手动创建LoggerFactory的方式未将配置集成到应用全局日志系统中,导致应用内部使用的日志实例不遵循该配置。需通过WebApplicationBuilder.Logging来配置全局日志:
public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // 配置全局日志提供程序 builder.Logging.ClearProviders(); builder.Logging.AddConsole(); builder.Logging.AddDebug(); builder.Logging.AddAzureWebAppDiagnostics(); // 绑定Azure日志的配置项 builder.Services.Configure<AzureFileLoggerOptions>( builder.Configuration.GetSection("Logging:AzureAppServices:File")); builder.Services.Configure<AzureBlobLoggerOptions>( builder.Configuration.GetSection("Logging:AzureAppServices:Blob")); builder.Services.Configure<AzureTableLoggerOptions>( builder.Configuration.GetSection("Logging:AzureAppServices:Table")); // 获取全局日志实例 var logger = builder.Services.BuildServiceProvider().GetRequiredService<ILogger<Program>>(); // 其他代码... }
二、修正appsettings.json的配置结构
你的Blob和Table配置节点位置错误,Azure Web App诊断日志的配置需嵌套在AzureAppServices节点下,否则不会被读取:
"Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning", "Microsoft.Hosting.Lifetime": "Information" }, "AzureAppServices": { "File": { "IsEnabled": true, "LogLevel": { "Default": "Information" } }, "Blob": { "IsEnabled": true, "LogLevel": { "Default": "Information" } }, "Table": { "IsEnabled": true, "LogLevel": { "Default": "Information" } } } }
三、检查Azure Portal的日志配置细节
- 进入应用服务的监控 > 应用服务日志,确认以下设置:
- 「应用日志(文件系统)」已开启,日志级别设为
Information或更低(如Verbose) - 文件系统日志保留期不要设为0,建议至少1天
- 若使用Blob/Table存储,确认存储账户已正确关联,且连接字符串有效
- 「应用日志(文件系统)」已开启,日志级别设为
- 在日志流页面,确保选择的源是「应用日志」,而非Web服务器日志或其他源
四、验证日志是否实际生成
通过Kudu工具检查日志文件是否存在:
- 访问
https://<你的应用名称>.scm.azurewebsites.net/DebugConsole - 进入
LogFiles/Application目录,查看是否有.log文件- 若存在:说明日志已生成,Log Stream可能存在延迟,等待几分钟或刷新页面
- 若不存在:回到配置步骤,检查日志提供程序是否正确注册
五、确保应用使用全局日志实例
在控制器、服务等组件中,通过依赖注入获取ILogger<T>,而非手动创建日志实例,这样才能使用全局配置的日志规则:
public class HomeController : Controller { private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { _logger.LogInformation("首页已加载"); return View(); } }
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

