C#에서 Nlog로 logging할 때 먼저 도구-> nuget패키지 관리자 -> 솔루션 패키지 관리
에서 찾아보기로 NLog.Config를 다운 받아 줍니다.
그리고 Nlog.config 파일 안에 해당 target이나 rules를 적어 logging을 관리 할 수 있지만 App.config 파일을 통해 logging을 관리 할 수 있습니다.
코드 내에서 logging을 사용하는 방법도 config를 사용하는 방법과 사용하지 않는 방법이 있지만 이번 포스팅에서는 사용하는 방법을 소개하려고 합니다.
Nlog.config 이름의 파일로 XML형식으로 설정하는 방식을 사용하면 코드로 작성하는 부분은 가독성이 떨어지고, 프로그램 설치시마다 NLog.config를 일일히 관리해 줘야 하기 때문에 설정이나 관리가 편리한 방식인 App.config에 설정하기로 하였습니다.
<configuration>
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
</configSections>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<variable name="logDirectory"/>
<targets>
<target name="logfile"
xsi:type="File"
layout="${longdate} | ${level:uppercase=true:padding=-5} | ${message}"
fileName="${var:logDirectory}"/>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="logfile" />
</rules>
</nlog>
</configuration>
App.config파일에 있는 내용입니다.
저 안에 variable를 설정해주고 target에서 넣고 싶은 곳에 바인딩시켜주면 됩니다.
코드 내에서 다음과 같이 App.config파일에 보내줄 내용을 설정해줍니다.
// System Logging Setting
string time = DateTime.Now.ToString(@"yyyy-MM-dd HH:mm:ss");
LogManager.Configuration.Variables["logDirectory"] = Path.Combine("C:\", $"{time}.log");
마지막으로 다음과 같이 사용하면 logging된 것을 확인할 수 있습니다.
public static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
Logger.Debug("Program execute");