Quartz.net e Common.Logging - Utilizzando Log4Net
-
19-09-2019 - |
Domanda
sto usando Quartz.net all'interno di un servizio di Windows. Attualmente, il trigger non è sparare -. Mi piacerebbe utilizzare la registrazione per scoprire perché
Ho modificato il mio file di configurazione per il servizio di 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>
La mia struttura dei file è il seguente:
C: \ CompanyName - dir radice per tutti i progetti
C: \ CompanyName \ accumulo \ bin - directory di output per tutti i progetti / librerie di classi nella mia soluzione
C: \ CompanyName \ lib - Dove 3rd binari partito / DLL vengono messe
Nel mio progetto di servizio Windows, ho un riferimento a quarzo (nella cartella C: \ CompanyName \ cartella lib)
Ho anche aggiunto un riferimento alla Common.Logging.Log4net.dll
Quando ho testare la mia app, ottengo il seguente errore:
Impossibile caricare il file o l'assembly 'Common.Logging, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = af08829b84f0328e' o una delle sue dipendenze. la posizione definizione manifesta dell'assemblea fa non corrisponde al riferimento assemblaggio. (Eccezione da HRESULT: 0x80131040) ":" Common.Logging, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = af08829b84f0328e
Soluzione
Penso che si potrebbe avere la versione sbagliata di Common.Logging. La versione attuale di Quartz.Net utilizza la versione Common.Logging 1.2, non 2.0. Se avete bisogno di usare 2.0, provare uno ricompilare quartz.net con la versione 2.0 di registrazione comune o provare reindirizzando l'assemblea .
Altri suggerimenti
questo post per eseguire il debug dell'assembly di carico per vedere se è possibile individuare la causa della mancata corrispondenza.