즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/C#

[2021.09] fo-DICOM Log4Net 사용방법

다물칸 2021. 9. 6. 10:44
728x90
반응형

안녕하세요. 제가 의료기기 쪽 IT 솔루션을 개발하다보니 fo-DICOM이라는 라이브러리를 사용하는데 Logger연동이 쉽지 않아서 작성해봅니다. 

 

 

2016년 이슈가 떴으면 제대로 문서화를 해놓을 것이지 공식 홈페이지에는 존재하지 않는 방법입니다. 

 

보통 Log4Net Config 파일은 Properties/AssemblyInfo.cs 맨 끝에 넣는 것이 일반적인데, fo-DICOM의 Log4Net 인터페이스가 그것을 인지하지 못하는 버그(이슈)가 있습니다. 

 

그래서 다음 코드를 프로젝트 Root에 있는 App.Config파일에 추가합니다. 

  <appSettings>
      <add key="log4net.Config" value="Config/Log4net.config"/>
      <add key="log4net.Config.Watch" value="True"/>
      <add key="log4net.Internal.Debug" value="true" />
  </appSettings>
  <system.diagnostics>
      <trace autoflush="true">
          <listeners>
              <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/log4NetDiagnostics.log" />
          </listeners>
      </trace>
  </system.diagnostics>

그리고 Program.cs 도입부분에 다음 코드를 추가합니다. 

Dicom.Log.LogManager.SetImplementation(Dicom.Log.Log4NetManager.Instance);

이 코드는 도입부 한번만 세팅하면 됩니다. 

이제 Logger를 사용할 클래스에 각각 다음 코드를 넣어서 사용해주시면 됩니다. 

 

private static readonly Dicom.Log.Logger logger = Dicom.Log.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType.ToString());

이걸 개별적으로 클래스마다 넣는 이유는 해당 클래스명을 로그에 넣기 위함입니다.

 

fo-DICOM에서 제공해주는 인터페이스가 String밖에 되지 않아 Log4Net 처럼 Object를 지원하지 않는 단점이 있습니다. 그래도 fo-DICOM에서 발생하는 로그를 함께 볼 수 있다는 점 때문에 어쩔 수 없이 사용중이지요.

반응형