使用 Spring Boot 禁用 AppClassLoader AspectJ 日志记录

Disable AppClassLoader AspectJ logging with Spring Boot

我的问题与这个非常相似:Suppressing logs from AppClassLoader

不同之处在于我将 AspectJ 与 Spring 引导一起使用(通过 @EnableAspectJAutoProxy@EnableLoadTimeWeaving(aspectjWeaving = ENABLED) 注释),所以我既没有 META-INF/aop.xml,也没有 META-INF/aop-ajc.xml 文件,在那里的答案中提到了这些文件。

如何使用基于注释的配置禁用这些烦人的 AppClassLoader 警告?

更新 澄清一下,我说的是这种日志:

...
[AppClassLoader@18b4aac2] error can't determine implemented interfaces of missing type org.springframework.cache.ehcache.EhCacheCacheManager
when weaving type org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration
when weaving classes 
when weaving 
 [Xlint:cantFindType]
[AppClassLoader@18b4aac2] error can't determine implemented interfaces of missing type org.springframework.cache.ehcache.EhCacheCacheManager
when weaving type org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration
when weaving classes 
when weaving 
 [Xlint:cantFindType]
[AppClassLoader@18b4aac2] error can't determine implemented interfaces of missing type org.springframework.cache.ehcache.EhCacheCacheManager
when weaving type org.springframework.boot.autoconfigure.cache.EhCacheCacheConfiguration
when weaving classes 
when weaving 
...

它们是红色印刷的,而且数量很多。所以我想以某种方式抑制这些日志。

为了在使用 AspectJ load-time 编织时抑制某些 AspectJ 编译器消息,您可以执行以下操作。

创建文件 aspectjweaver.jar!/org/aspectj/weaver/XlintDefault.properties 的副本到您的 resources/META-INF 文件夹,名称为 Xlint.properties

换行

cantFindType = error

cantFindType = ignore

然后,在您的resources/META-INF文件夹中创建您的aop.xml,如下所示,或者将相应的选项添加到<weaver>条目中,如图所示:

<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN"
        "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
    <weaver options="-Xlintfile:META-INF/Xlint.properties" />
</aspectj>

现在您的 cantFindType 错误应该被抑制,但其他 AspectJ 消息保持不变。您可以类似地更改其他 linter 消息的报告。