无法使用 Nlog 将日志写入 Azure

Unable to Write Logs into Azure with Nlog

我正在开发 DotNET 核心应用程序并尝试将 Nlogs 实现到 Azure 应用程序服务中。在 Local machine/Visual Studio 上工作时,我能够成功生成 Nlog。但是,当我发布要部署到 Azure 云上的应用程序时,Nlog 不会在指定位置生成。

这是我发布 Nlog 时所做的配置:- Release Configuration

将应用程序部署到云应用服务后,配置如下所示:- Application settings

我没有收到任何错误,应用程序运行正常,但我没有看到应用程序服务生成的任何日志。

  • 在Visual Studio中,创建.Net核心应用安装Nuget包 Microsoft.Extensions.Logging.AzureAppServices,Microsoft.Extensions.Logging.Console, 版本 3.1.2 为您的项目。

  • 在Startup.cs的ConfigureServices方法中,添加以下代码:

     public void ConfigureServices(IServiceCollection services)
        {
            //other code
    
            //add the following code
            services.AddLogging(loggingBuilder =>
            {
                loggingBuilder.AddConsole();
                loggingBuilder.AddDebug();
                loggingBuilder.AddAzureWebAppDiagnostics();
            });
        }
    

添加新控制器class并添加以下代码:

 private readonly ILogger<HomeController> _logger;
    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }
    public IActionResult Index()
    {
        _logger.LogInformation("**********first: hello, this is a test message!!!");
        _logger.LogInformation("**********second: hello, this is a test message!!!");
        return View();
    }
  • 将应用程序发布到 Azure。
  • 在 Azure 门户中导航至 --> App Service Logs,执行以下设置
  • 导航到Azure门户中的“日志流”,然后访问该网站,您可以看到日志:

您可以 activate log stream from log-files,因此它将监控存储在 HOME 文件夹中的任何以 .txt 或 .log 结尾的文件。然后你可以使用一个文件目标:

<?xml version="1.0" encoding="utf-8"?>
<nlog>
   <targets async="true">
      <target name="logfile" xsi:type="File" filename="${environment:HOME:cached=true}/logfiles/application/app-${shortdate}-${processid}.txt" />
   </targets>
   <rules>
      <logger name="*" minlevel="Info" writeTo="logfile" />
   </rules>
</nlog>

另请参阅:https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-cloud-logging-with-Azure-function-or-AWS-lambda#writing-to-azure-diagnostics-log-stream