12월, 2020의 게시물 표시

[C#/NLog] NLog 타겟이 Exception을 출력할 때 새로운 줄에 출력하도록 하기(newline)

NLog NLog. 정말 좋습니다. 예전 회사에 다닐 때엔 자바를 사용하며 log4j를 썼는데, 퇴사 후 C#으로 넘어오면서 log4j같은 것, 혹은 그보다 좋은 라이브러리가 없을까 하며 찾아보니 처음에는 log4net이, 그 다음에 바로 NLog가 눈에 들어오더군요. 그때 당시에는 제가 못 찾은건지 모르겠지만 log4net이 제대로 업데이트가 되고 있지 않아보였기에 NLog를 주력 로깅 라이브러리로 선택해 아직까지 잘 사용중입니다. LayoutRenderer 지원 NLog는 LayoutRenderer를 통한 다이나믹 로깅을 지원합니다. 예를 들어, <target layout="${longdate} ${level:uppercase=true} [${threadid}/${threadname}] ${logger}.${callsite:methodName=true} - ${message}" /> 위와 같은 레이아웃을 지닌 타겟은, 다음과 같은 형태의 로그를 출력하게 됩니다. 2020-12-15 11:50:34.4618 INFO [1/] HSUpdateUploaderGUI.MainWindow.HSUpdateUploaderGUI.MainWindow.Window_Loaded - Application is loaded. Exception 객체 지원 위와 같은 레이아웃 렌더러를 통해 예외 출력도 마음대로 설정할 수 있습니다. 기본적으로 ${exception} 렌더러를 사용합니다. 해당 렌더러는 NLog.Logger.(Trace|Debug|Info|Warn|Error|Fatal) 메서드의 첫 번째 인자로 Exception 객체가 주어졌을 때 해당 Exception 객체의 내용을 렌더러의 설정에 따라 출력합니다. 반대로, Exception 객체가 null일 경우에는 아무것도 출력하지 않고요. 하지만 여기서 문제가 생깁니다. 만약 예외 메세지를 다른 라인에 출력하고 싶다면? Exception 내용을 새 줄에