상세 컨텐츠

본문 제목

[ASP.NET Core] Logging

.NET/ASP.NET Core

by 클리엘 클리엘 2021. 11. 13. 01:53

본문

728x90

1. NuGet Package 설치

 

NuGet에서 etEscapades.Extensions.Logging.RollingFile package를 project에 설치합니다.

2. Log File 설정

 

Program.cs를 다음과 같이 수정해 ConfigureLogging method를 설정합니다.

Host.CreateDefaultBuilder(args)
    .ConfigureLogging((hostingContext) => hostingContext.AddFile(options =>
    {
        options.FileName = "log-";
        options.LogDirectory = "Logs";
        options.FileSizeLimit = null; //기본 10MB, 단위 MB
        options.RetainedFileCountLimit = null; //기본 2개
    }))
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });

FileName은 Log File이 생성될 때 File명 앞에 붙을 접두사를 의미합니다. LogDirectory는 Log File이 생성될 Folder를 의미하여 최대로 생성될 Log File의 크기는 FileSizeLimit에서 설정합니다. 만약 값을 설정하지 않는다면 기본 10MB로 제한되며 null이 지정된다면 무제한이 됩니다. 마지막으로 RetainedFileCountLimit는 최대로 생성될 Log File의 개수를 의미하는데 이것 역시 null로 설정하면 무제한으로 인식됩니다.

 

3. Log 설정

 

Startup.cs 파일에는 다음과 같이 Log와 관련된 설정사항을 추가합니다.

services.AddLogging(builder =>
{
    builder.AddConfiguration(Configuration.GetSection(key: "Logging"));
    builder.AddConsole();
    builder.AddDebug();
});

여기에서 key로 지정된 "Logging"은 appsetting.json에 있는 Logging설정을 의미하여 appsetting.json에서의 설정이 그대로 사용될 수 있음을 알 수 있습니다.

 

4. Log 남기기

 

실제 Logging을 사용하려면 우선 Controller에서 생성자 주입을 통해 Logger의 객체를 생성할 수 있도록 합니다.

private readonly ILogger<HomeController> _logger;

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

위와 같이 하면 _logger을 통해 전역적으로 Logging method를 사용할 수 있게 되는데 만약 특정 Action method에서만 Logging을 사용하는 경우라면 Action method에서 의존성 주입을 통해 같은 방법으로 Logger의 객체를 생성할 수 있습니다.

public IActionResult Index([FromServices] ILogger<HomeController> logger)
{
    return View();
}

위와 같이 객체가 생성되고 난 후 실제 Log를 남기려면 LogInformation()이나 LogError()등 상황에 맞는 method를 호출하여 필요한 Log를 남기면 됩니다.

public IActionResult Index()
{
    _logger.LogInformation("로그입니다.1");
    _logger.Log(LogLevel.Information, "로그입니다.2");

    return View();
}

생성된 Log는 위에서 설정한 Folder를 통해 확인할 수 있습니다.

728x90

관련글 더보기

댓글 영역