6

私の会社の標準のログ ツールは NLog です。Quartz.net を導入しようとしていて、Log4Net の代わりに NLog を使用できるかどうか尋ねられました。

NLog を使用するように再コンパイルできることはわかっていますが、可能であれば構成ファイルから実行したいと考えています。

4

3 に答える 3

9

Quartz.net1.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を使用します。

于 2011-07-04T10:22:46.867 に答える
3

config ディレクティブの使用は確かにこれを行う 1 つの方法ですが、既存の nlog 構成があり、Quartz ロギングを単に「ドロップ」したい場合は不要です。

nuget から適切なバージョンの 'Common.Logging.NLog' を参照し、通常どおりログを構成し、これを最後に追加します。

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

すべての Quartz ロギング (およびすべての一般的なロギング) が、既存の nlog 構成に転送されるようになりました。

于 2016-12-13T03:30:16.233 に答える
2

今日、私は同じ問題に直面しています。この記事は私を大いに助けてくれますが、物事は少し変わっています...

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>

NLogLoggerFactoryAdapterの名前空間は変更されませんが、dll 名が変更されます。

以下のバージョンが同じであることを確認してください。

  • Common.Logging

  • Common.Logging.Core

  • Common.Logging.NLogXX

于 2018-04-24T09:18:34.050 に答える