dev/asp.net, c#

[asp.net core 3.1] 파일 로깅 for nLog(엔로그)

코딩for 2020. 12. 7. 12:35
반응형

nLog 라이브러리를 이용하여 로깅 구현

 

 

이번 글에서는 nLog 를 이용한 로깅 시스템 구현을 알아보도록 하며 log4net 을 이용한 로깅은 아래 글을 참고 바람

 

[다른 라이브러리를 이용한 로깅은 다른 글 참조]

[asp.net core 3.1] 파일 로깅 for SeriLog (세리로그)

[asp.net core 3.1] 파일 로깅 for log4net (로그포넷)

 

 

asp.net core MVC 프로젝트를 이용하여 구현 한다.

 

 

nLog 패키지 모듈 설치 (NLog.Web.AspNetCore)

 

설치방법 1. nuget 패키지 콘솔 이용   

PM> Install-Package NLog.Web.AspNetCore

 

설치방법 2. nuget 패키지 관리자에서 검색 설치 

 

 

nLog환경 파일 추가

 

프로젝트 > 새 항목 추가에서 웹 구성파일(. config)을 nlog.config 이름으로 변경

 

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="Info"
      internalLogFile="c:\temp\internal-nlog.txt">

	<!-- enable asp.net core layout renderers -->
	<extensions>
		<add assembly="NLog.Web.AspNetCore"/>
	</extensions>

	<!-- the targets to write to -->
	<targets>
		<!-- another file log, only own logs. Uses some ASP.NET core renderers -->
		<target xsi:type="File" name="allfile" fileName="D:\logs\nlog-${shortdate}.log"
            layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}" />
	</targets>

	<!-- rules to map from logger name to target -->
	<rules>
		<!--All logs, including from Microsoft-->
		<logger name="*" minlevel="Trace" writeTo="allfile" />
	</rules>
</nlog>

* 환경 파일은 크게 target, rule 로 구성되어 있으며 targe 은 로깅 결과물에 대한 설정이며, rule 은 로거 정의를 한다.

[nLog 공식 사이트 바로가기]

 

 

nLog  사용하기

 

nLog설정(Program.cs)

 

using NLog.Web;  추가

CreateHostBuilder 에서 파이프라인을 통해 ConfigureLogging 을 추가하고 UseNLog를 사용하도록 하면 nLog 에 대한 설정은 완료가 된다.

 

 

Controller 에서의 nLog 사용

 

DI(Dependency Injection) 생성자 의존성 주입으로 logger 객체를 생성하여 logging

 

        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        public IActionResult Index()
        {
            _logger.LogTrace("logging  LogTrace ..");
            _logger.LogDebug("logging  LogDebug ..");
            _logger.LogInformation("logging  LogInformation ..");
            _logger.LogWarning("logging  LogWarning ..");
            _logger.LogError("logging  LogError ..");
            _logger.LogCritical("logging  LogCritical ..");

            return View();
        }

 

 

config 파일에서 target에서 설정한 경로에 로그 생성

 

 

로거 추가하기

 

nlog.config 환경설정 파일에 target, rule 를 추가

<!-- 새로운 target 을 추가한다. -->
<target xsi:type="File" name="nlog-test" fileName="D:\logs\nlog-test-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message}" />

<!-- 새로운 로거를 추가한다. -->
<logger name="nlog_test" minlevel="Trace" writeTo="nlog-test" />

 

Logger 사용하기

GetLogger 에서 사용할 logger 의 name 을 전달하면 해당 로거를 사용하여 로깅을 한다. 

using NLog;

Logger nLog = LogManager.GetLogger("nlog_test");
nLog.Info("nlog 로거 추가 테스트 ~~~~");

 

 

 

 

반응형