2013-05-27 2 views
8

Log4Net을 사용하여 NLog를 Common.Logging Façade 뒤에있는 로깅 라이브러리로 마이그레이션하려고 시도하는 Wpf .net 4.0 C# 프로젝트가 있습니다. 나는 이것이 쉬운 일이 될 것이라고 기대했지만, 그들이 말하는 것을 안다. 아무것도 쉬운 일이 아니다.일반적인 로깅 유형을로드 할 수 없습니다. NLog.TargetWithLayout

I가 NuGet을 사용하고 있습니다 : 버전 2.0.1.2에서

  • 다운로드 NLog.
  • Common.Logging.NLog를 버전 2.0.0에서 다운로드하십시오.
  • 버전 2.1.2에서 Common.Logging.NLog20을 다운로드하십시오.
  • NuGet을 사용하여 버전 2.0.0에서 버전 2.1.2로 Common Logging을 업데이트했습니다. app.config 파일에서

내가 가진 :

<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> 
... 그리고 ... 내가 응용 프로그램을 실행할 때

<dependentAssembly> 
    <assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" /> 
    </dependentAssembly> 

나는라는 오류가

'지정된 바인딩 제약 조건과 일치하는'NameSpace.Shell.AppBootstrapper '형식의 생성자를 호출하면 예외가 발생했습니다.' 줄 번호 '8'과 줄 위치 '18'.

내부 예외입니다 :

{ "요청 된 유형 중 하나 이상을로드 할 수 자세한 내용은 은 LoaderExceptions 속성을 검색 할 수 없습니다.."}

말했다 로더 예외를,이 하나는,이다 :

{ "형 어셈블리에서 'NLog.TargetWithLayout' 'NLog, 버전 = 2.0.1.0, 컬트를로드 할 수 없습니다 우레 = 중립, PublicKeyToken = 5120e14c03d0593c '. ""NLog.TargetWithLayout "} 누군가가이 문제를 극복하거나 주위에 일이 있습니다

NLog working with Common.Logging를 얻으려면?

오랫동안 질문에 게시하지 않으려는 목적으로 NLog.config 파일을 포함시키지 않았지만 유용 할 수 있습니다.

답변

15

나는이 질문을 한 후에 주위를 둘러 보았고 나는이 질문을하기 전에 검색을 많이했다. 나는 모듬 된 것들을 시도하고 그들이 일할 수 있기를 희망했다. 내가 찾은 무엇

내가 사용하던 Common.Logging.NLog.NLogLoggerFactoryAdapterCommon.Logging.Nlog DLL에서오고 사용했는데 그 DLL이 NLog.TargetWithLayout 클래스의 이전 위치를 사용 NLog 1.0.0.505에에 refrence을 가지고 있었다.

NuGet을 사용하여 Common.Logging.Nlog 패키지를 제거하고 앱에서 참조를 변경했습니다.에 설정 파일 :

<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog20"> 

이 다음 NLog 2.0.1.2 패키지에서 발견 NLog 수있는 올바른 클래스를 사용하고 응용 프로그램을 부팅 할 수 있습니다.

이 문제를 놓치지 않는 사람에게 도움이되기를 바랍니다. 나는 그것을 다루는 방법을 문서화 한 다른 누군가를 찾을 수 없었다.

2

아마도 Common.Logging.Nlog20 대신 Common.Logging.NLog NuGet 패키지를 설치했을 것입니다. CL의 버전 2와 NLog의 버전 2로 인해 너겟 참조를 혼동 할 수 있습니다. 당신은 명백하게 CL 버전 2이지만 NLog 버전 1을위한 NLogLoggerFactoryAdapter입니다.

+0

맞아요. 위의 대답에서 제가 말한 것은 꽤 많이 있습니다. – Klee

+0

나는 무슨 일이 일어나고 있는지 알아 냈습니다. 여기를 참조하십시오 https://github.com/net-commons/common-logging/issues/23#issuecomment-23339522 – skalinkin

관련 문제