-
[ASP.NET Core] Serilog 에서 미들웨어를 이용한 모든 Request 로그 기록 설정.NET/ASP.NET Core 2021. 10. 12. 23:10반응형
Serilog를 통해 모든 Request에서 로그기록을 하고 싶을 경우 LogContext와 미들웨어를 이용해야 한다.
* 사실 Serilog는 RequestID property가 기본제공되므로 미들웨어 없이 {RequestId}를 써도 되긴한다.LogContextMiddleware.cs
public class LogContextMiddleware { private readonly RequestDelegate _next; public LogContextMiddleware(RequestDelegate next) { _next = next; } public Task Invoke(HttpContext context) { using (LogContext.PushProperty("TraceId", context.TraceIdentifier)) { return _next.Invoke(context); } } }
서비스 등록시 .Enrich.FromLogContext를 호출해주지 않으면 PushProperty가 적용되지 않는다.
services.AddLogging(builder => { builder.ClearProviders(); Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} :[{TraceID}]:[{Level:u3}] {Message:lj}{NewLine}{Exception}") .CreateLogger(); builder.AddSerilog(); }
Configure 에서 미들웨어를 사용하도록 소스를 설정하면 된다.
if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseSwagger(); app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "LogTestWebApi v1")); } app.UseMiddleware<LogContextMiddleware>();
반응형'.NET > ASP.NET Core' 카테고리의 다른 글
[ASP.NET Core] WebAPI 개발 후 OpenAPI 서비스 참조로 Client 생성시 MSB3073 오류 날 경우 (0) 2022.03.06 [ASP.NET Core] 미들웨어(Middleware) 다룰때 유의사항 (0) 2021.11.05 [ASP.NET Core] 기본 로그를 지우고 Serilog만 나오도록 수정하는 방법 (0) 2021.09.22 [ASP.NET Core] AddSingleton(), AddScoped(), AddTransient() 차이점 - 1 (1) 2021.09.12 [ASP.NET Core] AddController(), AddMvc(), AddControllersWithViews(), AddRazorPages() 차이점 (0) 2021.06.26