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

时间:2017-10-27 14:14:25

标签: c# asp.net azure asp.net-core azure-storage

我已在Azure上为应用服务启用了应用程序日志记录。

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

配置详情:

  • 该应用使用在.NET Framework 4.6.1上运行的ASP.NET Core 2
  • 我通过Program.cs配置.ConfigureLogging(log => log.AddAzureWebAppDiagnostics())中的日志记录(在.NET Framework而不是.NET Core运行时运行时显然是必需的)

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

1 个答案:

答案 0 :(得分:1)

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

enter image description here

我们可以按照blog设置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();
 }

enter image description here

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

enter image description here