如何在处理注解时写入Gradle日志记录?

7
我有一个javax.annotation.processing.Processor,用于生成源文件。这一切都很好,但我想在构建过程中向控制台写一些调试消息。我可以使用注释Messeger类,但这并不允许我接入Gradle日志记录。我想要的是通过Gradle日志记录选项来控制输出,所以gradle -d ...写入调试消息,gradle -i ...写入信息消息等等。
有没有办法在我的Java bean处理类内部获得Gradle记录器?
我已经阅读了Gradle logging doco,并尝试使用SLF4J日志记录,但这只是将我的消息写到stdout,被Gradle识别为QUIET
private static final Logger log = LoggerFactory.getLogger("org.gradle.example");

messeger.printMessage(Diagnostic.Kind.NOTE, "BeanProcessor: processing " + classElem);
log.debug("===debug=== BeanProcessor: processClass {}", classElem);
log.error("===error=== BeanProcessor: processClass {}", classElem);

21:28:22.211 [QUIET] [system.out] 21:28:22.208 [main] DEBUG com.example.beans.BeanProcessor - ===debug=== BeanProcessor: processClass com.example.beans.MyBean
21:28:22.212 [QUIET] [system.out] 21:28:22.212 [main] ERROR com.example.beans.BeanProcessor - ===error=== BeanProcessor: processClass com.example.beans.MyBean
21:28:22.216 [ERROR] [system.err] Note: BeanProcessor: processing com.example.beans.MyBean

此外,我得到的记录器是一个ch.qos.logback.classic.Logger - Gradle文档提到:“Logger ...扩展了SLF4J Logger接口并添加了一些Gradle特定方法”,因此我希望看到一些特定于Gradle的日志记录类。
Gradle配置与Gradle中的注释处理器将源文件输出到build/classes,导致javadoc失败。如何修复?相同。
谢谢,
1个回答

0
一个可能有用的技巧:
你可以创建一个新的自定义 gradle 任务,让所有编译任务都依赖于它,并根据是否传递了 -i、-d 等参数给 gradle 设置一个系统环境变量(也许读取 logging.captureStandardOutput 的值就可以解决问题)。
然后在注解处理器启动时读取该环境变量,并使用它有条件地写入标准输出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接