ILogger 사용 시 Http Log를 남기지 않는 방법...?

.NET에서 로킹을 하면 3대장?으로 불리는 것에는 SeriLog, NLog, Log4Net이 있는 듯 합니다. 또한 기본 ILogger를 통해 Generic Host에서 지원되는 .NET 로그도 있습니다.

여기서 HTTP 로그는 Information 레벨로 취급되어서 Info 레벨로 로그 프레임워크를 설정하면 HTTP 로그까지 같이 기록이 됩니다.

사실 면밀하게 따지면 HTTP 로그도 필요한 것은 사실이겠으나, 개발자가 남기는 것 이외의 로그가 남게되면 로그의 가독성도 떨어지고, 사실 의미가 없는 로그라 판단됩니다.
따라서 Information 레벨로 설정해도 HTTP 로그는 남기지 않고 싶은데 혹 방법이 있을까요?

현재 저는 SeriLog를 사용하여 로그 설정은 코드에서 하고 있습니다. 관련 경험 있으신 분들의 노하우를 여쭙니다.

감사합니다.

좋아요 1

로그 레벨을 Warning이나 Error, Fatal로 설정하여 로그를 Warning 이상의 로그로 남기면 간편하지만…레벨에 맞지 않는 로그이므로, Info로 남기고 싶은 욕심입니다!

좋아요 1

로깅 구성을 보시면 도움이 되실 것 같습니다.

좋아요 2

아래코드를 써서 일단 기본적으로 남아있는 로거를 지워주시고,
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
})

ILogger를 상속한 로거를 등록해주신다음에 상속받은 로거안에 아래함수를 구현하시면 됩니다.
public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)

이때 logLevel 이랑 eventId가 넘어오는데, eventId로 원하시는것들을 필터링하시면 됩니다.

또는 디모이님께서 답변주신 문서에 있듯이 필터를 수정하시면 됩니다.
저같은 경우는 efcore event 같은것들을 샘플링하거나 원하는 포멧으로 수정하는 내용등을 포함시키기 때문에 필터링보다는 ILogger를 구현하는식으로 처리합니다.

좋아요 4

네…이거보고 이거저거 해봤는데도 잘 안되더라구요 ㅠㅠ 그래서 http 로그를 어떤식으로든 이미 필터링해서 사용하시는 분의 노하우를 보고 싶었습니다 ㅠㅠ 감사합니다!

좋아요 1

eventId는 생각치못했습니다. 이거 한 번 해보겠습니다 ㅎㅎ

좋아요 1