我公司的标准日志工具是NLog。我正在尝试介绍Quartz.net,并被问到是否可以使用NLog而不是Log4Net。
我知道我可以重新编译使用NLog,但是如果可能的话,我想从配置文件中完成。
答案 0 :(得分:7)
假设您使用的是Quartz.net 1.0.3。您必须添加对以下程序集的引用:
Common.Logging
Common.Logging.NLog
NLog
然后,您必须在应用程序的配置文件中添加以下配置:
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
...
<common>
<logging>
<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog">
<arg key="configType" value="FILE" />
<arg key="configFile" value="~/NLog.config" />
</factoryAdapter>
</logging>
</common>
</configuration>
请注意,我使用的是外部NLog.config文件。
注意强>:
Quartz.net使用Common.Logging 1.2版。
答案 1 :(得分:2)
配置指令的使用肯定是这样做的一种方式,但是如果你有一个现有的nlog配置并想要“插入”石英日志,那就没必要了。
只需从nuget引用相应版本的'Common.Logging.NLog',正常配置您的日志记录并将其添加到结尾:
var config = new NameValueCollection();
var adaptor = new NLogLoggerFactoryAdapter(config);
Common.Logging.LogManager.Adapter = adaptor;
现在,所有石英日志记录(以及所有常见日志记录)都将转发到您现有的nlog配置。
答案 2 :(得分:0)
今天我面临着同样的问题。 这篇文章给了我很多帮助,但是这些改变了一点......
我使用Quartz.Net 2.6.1。
不推荐使用Common.Logging.NLog,每个NLog版本都有一个新的dll。
所以新的配置是:
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
...
<common>
<logging>
<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog21">
<arg key="configType" value="FILE" />
<arg key="configFile" value="~/NLog.config" />
</factoryAdapter>
</logging>
</common>
</configuration>
&#13;
NLogLoggerFactoryAdapter 的命名空间未更改,但dll名称已更改。
请确保您使用的是相同版本:
Common.Logging
Common.Logging.Core
Common.Logging.NLogXX