我在 .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;
})
答案 0 :(得分:1)
我不确定您当前使用的是什么日志记录框架,但您通常可以根据您在代码中设置的条件来指定日志级别。
NLog 例如允许您命名记录器,并且您可以相应地设置该记录器的详细程度。例如,您可以根据程序集的根命名空间命名记录器。
见:https://github.com/nlog/nlog/wiki/Configuration-file#targets