Как переключиться с Log4Net на NLog в Quartz.Net? - PullRequest
6 голосов
/ 04 июля 2011

Стандартным инструментом ведения журнала моей компании является NLog.Я пытаюсь представить Quartz.net, и меня спросили, может ли он использовать NLog вместо Log4Net.

Я знаю, что могу перекомпилировать для использования NLog, но я хотел бы сделать это из файлов конфигурации, если привсе возможно.

Ответы [ 3 ]

9 голосов
/ 04 июля 2011

Предполагается, что вы используете 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.

2 голосов
/ 13 декабря 2016

Использование директив config, безусловно, является одним из способов сделать это, но если у вас есть существующая конфигурация nlog и вы хотите просто «добавить» кварцевую регистрацию, это не нужно.

Просто укажите «Общие».Logging.NLog 'соответствующей версии из nuget, сконфигурируйте свою регистрацию как обычно и добавьте это в конец:

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

Все записи кварца (и все обычные записи) теперь будут перенаправлены на существующуюКонфигурация nlog.

0 голосов
/ 24 апреля 2018

Сегодня я сталкиваюсь с той же проблемой.Эта статья мне очень помогает, но немного изменились ...

Я использую Quartz.Net 2.6.1.

Common.Logging.NLog устарел, и появился новыйDLL для каждой версии 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.NLog21">
        <arg key="configType" value="FILE" />
        <arg key="configFile" value="~/NLog.config" />
     </factoryAdapter>
      </logging>
   </common>

</configuration>

Пространство имен NLogLoggerFactoryAdapter не изменяется, но имя dll изменяется.

Убедитесь, что у вас такая же версия:

  • Common.Logging

  • Common.Logging.Core

  • Common.Logging.NLogXX

...