OpenIddict v5.2.0日志级别异常:错误日志转为信息日志咨询
问题现象
从OpenIddict v4.8.0升级到v5.2.0后,原本标记为Error级别的授权请求拒绝日志,被归类为Info级别,导致Serilog按Error级别过滤时无法捕获该日志。
两个版本的日志内容完全一致,但级别标记发生变化:
v4.8.0日志:
[ERR] (OpenIddict.Server.OpenIddictServerDispatcher) The authorization request was rejected because the redirect_uri was invalid: '"http://localhost:81/signin-callback"'.v5.2.0日志:
[INF] (OpenIddict.Server.OpenIddictServerDispatcher) The authorization request was rejected because the redirect_uri was invalid: '"http://localhost:81/signin-callback"'.
相关Serilog配置
项目appsettings.json中Serilog的日志级别配置:
"Logger": { "BasePath": "RootPath", "MinimumLevel": { "Default": "Error", "Override": { "ComponentSpace": "Error", "OpenIddict": "Error" } } }
问题原因
OpenIddict v5.x版本对日志级别归类做了调整:原本将客户端请求校验失败(如redirect_uri无效)这类场景标记为Error的逻辑,改为标记为Info。这类属于客户端侧的请求错误,并非服务器内部异常,项目维护团队调整日志级别是为了区分服务器自身故障和客户端请求问题。
解决方案
如果需要继续按Error级别捕获这类日志,可选择以下两种方式:
- 调整Serilog过滤规则:将OpenIddict的日志Override级别改为Debug或Verbose,同时通过Serilog的过滤规则,把包含"The authorization request was rejected"等关键词的日志内容提升为Error级别。
- 自定义事件日志:通过OpenIddict的
OpenIddictServerEvents事件拦截机制,在处理ValidateAuthorizationRequestContext事件时,检测到redirect_uri无效等错误场景后,自行通过ILogger记录Error级别的日志。
内容的提问来源于stack exchange,提问作者muthu pandi

