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에서 발생하는 로그를 함께 볼 수 있다는 점 때문에 어쩔 수 없이 사용중이지요.
반응형
'개발 > C#' 카테고리의 다른 글
[2022.08] C# Dapper 불특정 테이블을 조회할 때 (0) | 2022.08.12 |
---|---|
[2022.02] MSMQ를 이용해 프로세스 간 메시지 송/수신 처리하기 (0) | 2022.02.22 |
[2021.09] 입력문자가 어떤 언어인지 분별해주는 함수 (0) | 2021.09.04 |
[2021.06] C#에서 Cross-Thread Operation not valid 오류 (0) | 2021.06.09 |
[2021.05] Enum을 Combobox에 값을 넣을 때 Foreach 문 활용방법 (0) | 2021.05.14 |