繁体   English   中英

ASP.NET Core 应用程序日志未写入 Azure 应用服务中的 Blob

[英]ASP.NET Core Application Logs Not Written To Blob in Azure App Service

我为 Azure 上的应用服务启用了应用程序日志记录到 blob。

  • 我可以从 Azure 门户查看日志流中的日志
  • 我可以看到在我创建的 Azure 存储帐户中每小时都会创建一个类似xxxxx-#####.applicationLog.csv文件,但该文件实际上并不包含我的应用程序日志
  • 我尝试在同一帐户上启用 Web 服务器日志记录到存储,并且确实有效 - 我可以在不同的文件中看到 HTTP 请求的日志
  • 我尝试创建一个新的存储帐户并将其指向日志,但它没有改变任何内容

配置详情:

  • 该应用程序使用 ASP.NET Core 2,在 .NET Framework 4.6.1 上运行
  • 我通过以下方式在Program.cs配置日志记录: .ConfigureLogging(log => log.AddAzureWebAppDiagnostics()) (这在 .NET Framework 而不是 .NET Core 运行时运行时显然是必要的)

总结:当我在 Azure 门户中以这种方式配置 Azure 存储时,不会在 Azure 存储中创建包含我的应用程序日志的文件。

如果要将应用程序日志写入 Azure blob 存储,首先需要在 Azure 门户上启用应用程序日志并为其配置 blob 存储。

在此处输入图片说明

我们可以按照博客在 Asp.net 核心应用程序中设置日志记录。

在 ASP.NET Core 应用中设置登录不需要太多代码。 ASP.NET Core 新项目模板已经在 Startup.Configure 方法中使用以下代码设置了一些基本的日志记录提供程序:

loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
loggerFactory.AddDebug();

我也为它做演示。 它在我这边工作正常。

1.在Sartup.cs文件中添加如下代码

 loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();
            loggerFactory.AddAzureWebAppDiagnostics(
                new AzureAppServicesDiagnosticsSettings
                {
                    OutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss zzz} [{Level}] {RequestId}-{SourceContext}: {Message}{NewLine}{Exception}",

                }
            );

2.在HomeController.cs中添加如下代码

 private readonly ILogger _logger;
 public HomeController(ILoggerFactory loggerFactory)
 {
     _logger = loggerFactory.CreateLogger<HomeController>();
 }

 public IActionResult Index()
 {
    _logger.LogInformation("Log information");
    _logger.LogError("Logger error");
    return View();
 }

在此处输入图片说明

3.访问主页/索引页面并从 Azure 存储 blob 中检查它。 日志 blob 名称的最后一部分。 默认为“ applicationLog.txt ”。 我们也可以自己设置。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM