C#
Serilog 로그 설정
삽사
2024. 5. 19. 02:40
누겟 패키지 설치
Program.cs 파일 설정
using Serilog;
using Serilog.Events;
using Serilog.Formatting.Json;
var builder = Host.CreateApplicationBuilder(args);
//로그 설정
var logger = new LoggerConfiguration()
.WriteTo.Console() //콘솔창에 기록
//경고 단계부터 error 파일에 기록
.WriteTo.File(new JsonFormatter(), "../logs/log-error.json", restrictedToMinimumLevel:LogEventLevel.Warning)
//info 단계 로그부터 매일 날짜 이름으로 된 파일에 기록
.WriteTo.File(new JsonFormatter(), "../logs/log-.json", rollingInterval: RollingInterval.Day)
.MinimumLevel.Information()
.CreateLogger();
builder.Logging.ClearProviders();
builder.Logging.AddSerilog(logger);
var host = builder.Build();
host.Run();
실제로 로그 사용하는 법
private readonly ILogger<ClassName> _logger;
public ClassName(ILogger<ClassName> logger){
_logger = logger
}
public Method(){
_logger.LogInformation("logger is working..");
}
Program.cs 파일 기준으로 상위 폴더(../logs)에 저장했으므로 솔루션 루트 경로에 logs 폴더가 생긴다.
열어보면 이런식으로 기록이 되어있다.
번외: 설정 외부로 빼는 법
Extensions 폴더를 만들고 HostApplicationBuilderExtensions 라는 클래스를 만든다
public static class HostApplicationBuilderExtensions
{
public static void SerilogSettings(this HostApplicationBuilder builder)
{
//로그 설정
var logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.File(new JsonFormatter(), "../logs/log-error.json", restrictedToMinimumLevel:LogEventLevel.Warning)
.WriteTo.File(new JsonFormatter(), "../logs/log-.json", rollingInterval: RollingInterval.Day)
.MinimumLevel.Information()
.CreateLogger();
builder.Logging.ClearProviders();
builder.Logging.AddSerilog(logger);
}
}
Program.cs 파일을 수정한다.
using Serilog;
using Serilog.Events;
using Serilog.Formatting.Json;
var builder = Host.CreateApplicationBuilder(args);
builder.SerilogSettings(); //추가
var host = builder.Build();
host.Run();