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

Zou*_*out 6 c# asp.net azure azure-storage asp.net-core

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

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

配置详情:

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

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

Tom*_*SFT 3

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

\n

在此输入图像描述

\n

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

\n
\n

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

\n
\n
loggerFactory.AddConsole(Configuration.GetSection("Logging")); \nloggerFactory.AddDebug();\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

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

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

\n
 private readonly ILogger _logger;\n public HomeController(ILoggerFactory loggerFactory)\n {\n     _logger = loggerFactory.CreateLogger<HomeController>();\n }\n\n public IActionResult Index()\n {\n    _logger.LogInformation("Log information");\n    _logger.LogError("Logger error");\n    return View();\n }\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

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

\n

在此输入图像描述

\n