log4net 라이브러리를 이용하여 로깅 구현
[다른 라이브러리를 이용한 로깅은 다른 글 참조]
[asp.net core 3.1] 파일 로깅 for nLog (엔로그)
[asp.net core 3.1] 파일 로깅 for SeriLog (세리로그)
이번 글에서는 asp.core mvc 프로젝트 애플리케이션을 이용한다.
log4net 패키지 모듈 설치 (Microsoft.Extensions.Logging.Log4Net.AspNetCore)
설치방법 1. nuget 패키지 콘솔 이용
PM> Install-Package Microsoft.Extensions.Logging.Log4Net.AspNetCore
설치방법 2. nuget 패키지 관리자에서 검색 설치
log4net 환경파일 추가
프로젝트 > 새항목 추가에서 웹구성파일( .config)을 log4net.config 이름으로 변경(파일명은 변경가능)
log4net.config 환경설정 파일
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="AppendFile" type="log4net.Appender.RollingFileAppender">
<file value="d:/Logs/" />
<datepattern value="yyyy-MM-dd.'txt'"/>
<staticlogfilename value="false"/>
<appendtofile value="true"/>
<rollingstyle value="Composite"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="AppendFile" />
</root>
</log4net>
* 환경설정과 관련된 자세한 설명은 log4net 공식 사이트를 참고 바랍니다.
log4net 사용하기
Startup.cs
using Microsoft.Extensions.Logging; 추가
Configure 메서드에서 ILoggerFactory 를 인자로 넘겨주고 AddLog4Net()모듈을 사용
AddLog4Net 에 인자로 환경 설정 파일명을 전달(log4net.config 가 디폴트)
Controller 에서의 log4net 사용
DI(Dependency Injection) 생성자 의존성 주입으로 logger 객체를 생성하여 logging
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogError("logging.. 테스트");
return View();
}
config 파일에서 설정한 경로에 로그가 생성
log4net로그는 기록하는 레벨이 존재하며 환경파일 에서 지정한 레벨로 기록을 한다.
- ALL
- DEBUG
- INFO
- WARN
- ERROR
- FATAL
특정 레벨의 로그만 기록하기 위해서는 filter 를 추가 하여(MIN, MAX) 레벨을 제한할 수 있다.
<appender name="AppendFile_FATAL" type="log4net.Appender.RollingFileAppender">
<file value="d:/Logs/" />
<datepattern value="yyyy-MM-dd'_fatal.txt'"/>
<staticlogfilename value="false"/>
<appendtofile value="true"/>
<rollingstyle value="Composite"/>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="FATAL" />
<param name="LevelMax" value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" />
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="AppendFile_FATAL" />
</root>
asp.net core 의 loggerFactory 의 로그 레벨
- Trace
- Debug
- Information
- Warning
- Error
- Critical
로깅 결과
* debug 레벨까지 로깅을 하기 위해서는 appsetting.json 파일의 LogLevel 의 defaut 값을 Debug로 변경해야한다.
(테스트 해보면 Debug 이상부터만 log4net 모듈로 로깅이 가능한것 같다)
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
[참고]
[asp.net] 웹사이트 Application_Error 에러(Exception)로깅 with log4net
https://www.thecodebuzz.com/log4net-file-logging-console-logging-asp-net-core/
'dev > asp.net, c#' 카테고리의 다른 글
[asp.net core 3.1] 파일 로깅 for SeriLog (세리로그) (0) | 2020.12.18 |
---|---|
[asp.net core 3.1] 파일 로깅 for nLog(엔로그) (0) | 2020.12.07 |
[c#] JSON.NET 을 이용한 Json 데이터 파싱 - Json Key Name 가져오기 (JObject, JToken) (0) | 2020.11.27 |
[asp.net] 웹사이트 Application_Error 에러(Exception)로깅 with log4net (2) | 2020.11.18 |
[c#] 숫자 및 날짜 서식 지정 (표준형식, 사용자형식) (0) | 2020.11.17 |