我可以在 .NET Core 中降低库的日志级别吗?

时间:2021-06-06 09:00:43

标签: c# asp.net asp.net-core authentication .net-core

我在 .NET Core 服务中使用来自 S2SAuthenticationHandler 命名空间的 Microsoft.IdentityModel.S2S 进行身份验证。

当身份验证失败时,有许多冗余的错误日志我希望将其作为警告(例如,如果令牌已过期 - 我不想看到任何错误)。

如果我将最低日志级别设置为关键(以避免错误日志),我会错过一些有关身份验证失败原因的信息。

有什么办法可以将库的错误日志级别降低到警告

谢谢!

services.AddAuthentication()
    .AddS2SAuthentication(services, authManager, options =>
            {
                var events = new S2SAuthenticationEvents
                {
                    OnTokenValidated = validatedToken =>
                    {
                        validatedToken.Principal = FixClaims(validatedToken.AuthenticationTicket);
                        return Task.FromResult<object>(null);
                    },
                    OnAuthenticationMessageReceived = context =>
                    {
                        context.S2SContext = new S2SContext(Guid.NewGuid()) { CaptureLogs = true };
                        return Task.FromResult<object>(null);
                    },
                    OnAuthenticationFailed = context =>
                    {
                        // This exception do not the authentication failure reason
                        logger.LogWarning(context.Exception, "Authentication failed, exception might contain additional details");
                        return Task.FromResult<object>(null);
                    }
                };

                options.Events = events;
            })

1 个答案:

答案 0 :(得分:1)

我不确定您当前使用的是什么日志记录框架,但您通常可以根据您在代码中设置的条件来指定日志级别。

NLog 例如允许您命名记录器,并且您可以相应地设置该记录器的详细程度。例如,您可以根据程序集的根命名空间命名记录器。

见:https://github.com/nlog/nlog/wiki/Configuration-file#targets

相关问题