Quartz.net と Common.Logging - Log4Net の使用
-
19-09-2019 - |
質問
Windows サービス内で Quartz.net を使用しています。現在、トリガーは起動していません。ログを使用して理由を調べたいと思います。
Windows サービスの構成ファイルを編集しました。
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<appSettings>
<!--specific win service settings here-->
</appSettings>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE"/>
<arg key="configFile" value="c:\sched.log"/>
<arg key="level" value="INFO" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %l - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="EventLogAppender" />
</root>
</log4net>
私のファイル構造は次のとおりです。
C:\会社名 - すべてのプロジェクトのルート ディレクトリ
C:\会社名\ビルド\bin - ソリューション内のすべてのプロジェクト/クラス ライブラリの出力ディレクトリ
C:\会社名\lib - サードパーティのバイナリ/DLL が置かれる場所
私の Windows サービス プロジェクトには、Quartz への参照があります (C:\CompanyName\lib フォルダー内)
Common.Logging.Log4net.dll への参照も追加しました。
アプリをテストすると、次のエラーが発生します。
ファイルまたはアセンブリを読み込めませんでした 'Common.Logging、バージョン = 2.0.0.0、 Culture=neutral、 PublicKeyToken=af08829b84f0328e' または その依存関係の 1 つ。配置された アセンブリのマニフェスト定義は、 アセンブリ参照と一致しません。(HRESULT からの例外:0x80131040)":"Common.Logging, バージョン = 2.0.0.0、カルチャ = ニュートラル、 パブリックキートークン=af08829b84f0328e
解決
Common.Logging のバージョンが間違っている可能性があります。Quartz.Net の現在のバージョンは、Common.Logging バージョン 2.0 ではなく 1.2 を使用します。2.0 を使用する必要がある場合は、共通ログの 2.0 バージョンで Quartz.net を再コンパイルするか、試してください。 アセンブリのリダイレクト その代わり。
他のヒント
使用 この郵便受け アセンブリの読み込みをデバッグして、不一致の原因を特定できるかどうかを確認します。