无法使用 Nlog 将日志写入 Azure

Posted

技术标签:

【中文标题】无法使用 Nlog 将日志写入 Azure【英文标题】:Unable to Write Logs into Azure with Nlog 【发布时间】:2021-11-10 07:01:51 【问题描述】:

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

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

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

我没有收到任何错误并且应用程序运行良好,但我没有看到应用服务上生成任何日志。

【问题讨论】:

【参考方案1】:

在 Visual Studio 中,创建 .Net core Application Install Nuget Package Microsoft.Extensions.Logging.AzureAppServices, 和Microsoft.Extensions.Logging.Console, version 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();
        );
    

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

 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 门户中导航到 --> 应用服务日志,执行以下设置 在azure门户中导航到“日志流”,然后访问网站,可以看到日志:

【讨论】:

谢谢,成功了。 为了让loggingBuilder.AddDebug(); 工作,我必须将Microsoft.Extensions.Logging.Debug nuget 包安装到我的项目中。【参考方案2】:

您可以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

【讨论】:

以上是关于无法使用 Nlog 将日志写入 Azure的主要内容,如果未能解决你的问题,请参考以下文章

Azure 应用服务 - 无法将日志存储在 Azure 存储中

使用 anotar catel nlog 日志记录时无法过滤类名(在 NLog.config 中)

NLog输出日志到Azure Blob存储

NLog写入Mongo日志配置

C# 使用NLog记录日志

.Net -- NLog日志框架配置与使用