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 : CompanyName - 모든 프로젝트에 루트를 뿌립니다
C : CompanyName build bin - 내 솔루션의 모든 프로젝트 / 클래스 라이브러리의 출력 디렉토리
C : CompanyName lib - 제 3 자 바이너리 / DLL이있는 곳
Windows Service 프로젝트에는 Quartz (C : CompanyName Lib 폴더)에 대한 참조가 있습니다.
또한 common.logging.log4net.dll에 대한 참조를 추가했습니다
앱을 테스트하면 다음 오류가 발생합니다.
파일 또는 어셈블리 'common.logging, version = 2.0.0.0, culture = neutral, publickeyToken = AF08829B84F0328E'또는 그 종속성 중 하나를로드 할 수 없습니다. 위치 어셈블리의 매니페스트 정의는 어셈블리 참조와 일치하지 않습니다. (HRESULT의 예외 : 0x80131040) ":"Common.logging, 버전 = 2.0.0.0, Culture = Neutral, PublicKeyToken = AF08829B84F0328E
해결책
Common.logging의 잘못된 버전이있을 수 있다고 생각합니다. Quartz.net의 현재 버전은 2.0이 아닌 Common.logging 버전 1.2를 사용합니다. 2.0을 사용해야하는 경우 2.0 버전의 공통 로깅으로 Quartz.net을 다시 컴파일하거나 시도해보십시오. 어셈블리 리디렉션 대신에.
다른 팁
사용 이 게시물 어셈블리 로딩을 디버깅하여 불일치 원인을 정확히 찾아 낼 수 있는지 확인하십시오.