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

.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的日志配置细节

  1. 进入应用服务的监控 > 应用服务日志,确认以下设置:
    • 「应用日志(文件系统)」已开启,日志级别设为Information或更低(如Verbose)
    • 文件系统日志保留期不要设为0,建议至少1天
    • 若使用Blob/Table存储,确认存储账户已正确关联,且连接字符串有效
  2. 在日志流页面,确保选择的源是「应用日志」,而非Web服务器日志或其他源

四、验证日志是否实际生成

通过Kudu工具检查日志文件是否存在:

  1. 访问https://<你的应用名称>.scm.azurewebsites.net/DebugConsole
  2. 进入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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:03:21