How do I switch from Log4Net to NLog in Quartz.Net?

本小妞迷上赌 提交于 2019-11-27 15:16:10
LeftyX

Assuming that you're using Quartz.net 1.0.3. you have to add a reference to the following assemblies:

Common.Logging
Common.Logging.NLog
NLog

Then you have to add the following configuration in your application's config file:

<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>

Note that I am using an external NLog.config file.

NOTE:

Quartz.net uses Common.Logging version 1.2.

Doug

The use of config directives is certainly one way of doing this, but if you have an existing nlog config and want to just 'drop in' the quartz logging, it's unnecessary.

Simply reference 'Common.Logging.NLog' of the appropriate version from nuget, configure your logging as normal and add this to the end:

var config = new NameValueCollection();
var adaptor = new NLogLoggerFactoryAdapter(config);
Common.Logging.LogManager.Adapter = adaptor;

All of the quartz logging (and all common logging) will now be forwarded to your existing nlog configuration.

Today I'm facing with the same issue. This article help me a lot, but thigs are changed a little bit...

I use Quartz.Net 2.6.1.

Common.Logging.NLog is deprecated and there is a new dll for each NLog version.

So the new configs is:

<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>

The namespace of NLogLoggerFactoryAdapter is not changed, but the dll name is changed.

Be sure you have the same version of:

  • Common.Logging

  • Common.Logging.Core

  • Common.Logging.NLogXX

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!