如何禁止DI GetRequiredService获取对象调用Async Method时的日志输出
解决异步方法调用时输出“Async Method”日志的问题
步骤1:定位日志来源
首先要明确这条日志的具体输出方,修改日志配置让控制台输出日志的**类别(Category)**信息,才能精准屏蔽。
在appsettings.json(或对应环境的配置文件)中调整Console日志格式,添加{Category}字段:
"Logging": { "Console": { "FormatterOptions": { "Format": "{Timestamp:HH:mm:ss} [{Level}] {Category}: {Message}{NewLine}{Exception}", "IncludeScopes": true, "TimestampFormat": "HH:mm:ss " } }, "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }
重新运行项目后,就能在控制台看到“Async Method”日志对应的Category(常见如System.Runtime.CompilerServices.AsyncMethodBuilder或第三方库的命名空间)。
步骤2:针对性屏蔽日志
根据找到的Category,直接在日志配置中把该类别的日志级别设为None,彻底屏蔽:
"Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "{找到的Category名称}": "None" } }
比如排查后发现是System.Runtime.CompilerServices.AsyncMethodBuilder输出的,就配置:
"Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "System.Runtime.CompilerServices.AsyncMethodBuilder": "None" } }
步骤3:排查自定义或第三方日志拦截
- 检查项目中是否有自定义的
DiagnosticListener、日志拦截器或AOP逻辑,若存在针对异步方法的日志埋点,直接移除对应代码。 - 如果是第三方依赖库输出的日志,查看该库文档确认是否有开关配置关闭这类日志,或者通过上述日志配置方式屏蔽其Category。
内容的提问来源于stack exchange,提问作者ITMan
相关产品推荐
相关产品推荐

