无法使用 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 存储中