programming

ILogger의 구현체로 log4net을 사용하기

programmer j 2024. 10. 1. 03:45

Log4netExample.zip
0.01MB

 

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

  https://kjun.kr/1355

 

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 ConsoleAppenderconversionPattern

Console로그 패턴

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 RollingFileAppenderconversionPattern

File로그 패턴

%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 SeqAppenderconversionPattern

Seq로그 패턴

Seq서버로그예

 

6. Logging provider참고자료

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-8.0#third-party-logging-providers