在 Azure WebJobs 中使用 NLog 记录

Logging With NLog In Azure WebJobs

我有一个 NLog 配置,它适用于我的网络应用程序 (ASP.NET Core)。 现在我正在尝试将 NLog 添加到我的网络作业中,但我不知道该怎么做。

在 Program.cs 的 webjob 项目中,我需要以某种方式注入 IHostingEnvironment 和 ILoggerFactory(我将它们都注入到 Web 应用程序的 StartUp 构造函数中)。 一旦我知道该怎么做,我应该能够完成配置。

如果那不可能,我有什么选择?

我不喜欢使用传递到 webjob 方法中的 TextWriter class,因为我想提取日志并将它们路由到我最终希望它去的地方会很困难。

以下是在WebJob中使用NLog的步骤。

第 1 步,为您的 WebJob 安装 NLog.Config 包。

Install-Package NLog.Config

第 2 步,将规则和目标添加到 NLog.config 个文件。以下是将日志写入文件的示例。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="logfile" xsi:type="File" fileName="file.txt" />
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="logfile" />
  </rules>
</nlog>

第 3 步,使用 LogManager 获取记录器实例 class。

private static Logger logger = LogManager.GetLogger("MyLog");

第四步,获取到logger实例后,就可以使用下面的代码写log了。

logger.Trace("Sample trace message");
logger.Debug("Sample debug message");