log4net의 ILog인터페이스로 로깅을 할 수도 있으나 Microsoft.Extensions.Logging.ILogger의 구현체로 log4net을 사용해서 로깅을 할 수도 있다.
1. 프로젝트 구성
- IDE : Visual Studio 2022 Version 17.11.4
- Target framework : .NET 8.0
2. 필요한 nuget 패키지
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Log4Net.AspNetCore
- Seq.Client.Log4Net
3. log4net의 출력을 Seq서버에 저장할 경우 필요한 프로그램
- Seq :https://datalust.co/download
- Seq설치방법 참고자료
https://forum.dotnetdev.kr/t/log-viewer-feat-serilog/9492
4. log4net을 이용해 Microsoft.Extensions.Logging.ILogger만들기
:
using var loggerFactory = LoggerFactory.Create(builder =>
{
builder.AddLog4Net("Log4netSetting.xml") // log4net을 ILogger 구현체로 추가
.SetMinimumLevel(LogLevel.Trace);
});
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogTrace("Trace");
logger.LogDebug("Debug");
logger.LogInformation("Information");
logger.LogWarning("Warning");
logger.LogCritical("Critical");
:
5. Log4netSetting.xml 설정파일의 로그출력 패턴 예
5.1 ConsoleAppender의 conversionPattern값
Console로그예
TRACE [1] (F:\writing\Log4netExample\Log4netExConsoleApp1\Program.cs:19) - Trace
DEBUG [1] (F:\writing\Log4netExample\Log4netExConsoleApp1\Program.cs:20) - Debug
INFO [1] (F:\writing\Log4netExample\Log4netExConsoleApp1\Program.cs:21) - Information
WARN [1] (F:\writing\Log4netExample\Log4netExConsoleApp1\Program.cs:22) - Warning
FATAL [1] (F:\writing\Log4netExample\Log4netExConsoleApp1\Program.cs:23) - Critical
DEBUG [1] (F:\writing\Log4netExample\Log4netExLib\Calculator.cs:13) - Calculator 생성자 호출
DEBUG [1] (F:\writing\Log4netExample\Log4netExLib\Calculator.cs:18) - Add enter : 1, 2
DEBUG [1] (F:\writing\Log4netExample\Log4netExLib\Calculator.cs:24) - Add leave
DEBUG [1] (F:\writing\Log4netExample\Log4netExLib\Calculator.cs:31) - Subtract : 1, 2
DEBUG [1] (F:\writing\Log4netExample\Log4netExLib\Calculator.cs:38) - Multiply : 1, 2
DEBUG [1] (F:\writing\Log4netExample\Log4netExLib\Calculator.cs:45) - Divide : 4, 2
5.2 RollingFileAppender의 conversionPattern값
%type : 네임스페이스를 포함한 클래스이름
예) Log4netExConsoleApp1.Program
%type{1} : 네임스페이스가 없는 클래스이름
예) Program
짧은 타입이름으로 만들기 참고자료
log4net tips: Shortening the type name | Optimizely Developer Com
파일로그예
20241001 015540.790 TRACE 1 Program.Main - Trace
20241001 015540.994 DEBUG 1 Program.Main - Debug
20241001 015541.000 INFO 1 Program.Main - Information
20241001 015541.004 WARN 1 Program.Main - Warning
20241001 015541.009 FATAL 1 Program.Main - Critical
20241001 015541.012 DEBUG 1 Calculator..ctor - Calculator 생성자 호출
20241001 015541.017 DEBUG 1 Calculator.Add - Add enter : 1, 2
20241001 015541.020 DEBUG 1 Calculator.Add - Add leave
20241001 015541.028 DEBUG 1 Calculator.Subtract - Subtract : 1, 2
20241001 015541.033 DEBUG 1 Calculator.Multiply - Multiply : 1, 2
20241001 015541.036 DEBUG 1 Calculator.Divide - Divide : 4, 2
5.3 SeqAppender의 conversionPattern값
Seq서버로그예
6. Logging provider참고자료
'programming' 카테고리의 다른 글
ILogger의 구현체로 NLog를 사용하기 (2) | 2024.10.02 |
---|---|
ILogger의 구현체로 Serilog를 사용하기 (0) | 2024.10.01 |
같은 이벤트에 대한 View와 ViewModel의 메쏘드 호출 순서 (0) | 2024.09.27 |
안드로이드 개발 자료모음 (0) | 2022.02.01 |
GPIO - 버튼처리 (0) | 2020.08.08 |