Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

My company's standard logging tool is NLog. I'm trying to introduce Quartz.net and was asked if it could use NLog instead of Log4Net.

I know I can recompile to use NLog, but I'd like to do it from the configuration files if at all possible.

like image 962
Brad Bruce Avatar asked Jul 04 '11 10:07

Brad Bruce


2 Answers

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.

like image 165
LeftyX Avatar answered Oct 18 '22 07:10

LeftyX


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.

like image 3
Doug Avatar answered Oct 18 '22 08:10

Doug