使用NLog登录Azure Web作业

问题描述:

我有一个NLog配置,对我的Web应用程序(ASP.NET Core)工作得很好。 现在我正在尝试将NLog添加到我的webjobs中,但我无法弄清楚如何去做。使用NLog登录Azure Web作业

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

如果这是不可能的,我有什么替代方案?

我并不热衷于使用传递到webjob方法的TextWriter类,因为我想这将很难提取日志并将它们路由到最终希望它去的地方。

以下是在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类获取记录器实例。

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

第4步,获得记录器实例后,您可以使用以下代码编写日志。

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

这对任何人都适用吗?我没有看到任何创建的文件。也许这是因为我有一个.NET核心应用程序。 –