在处理批注时如何写Gradle日志?

Bar*_*ney 6 java gradle annotation-processing

javax.annotation.processing.Processor正在使用一个生成源文件。一切正常,但是我想在构建过程中将一些调试消息写到控制台。我可以使用注释Messeger类,但这不允许我使用Gradle日志记录。我想要通过Gradle日志记录选项控制输出,因此gradle -d ...编写调试消息,gradle -i ...信息消息等。

有什么办法可以从Java bean处理类中获取Gradle记录器?

我已经阅读了Gradle日志记录doco,并尝试使用SLF4J日志记录,但这只是将我的消息写到stdout,QUIET由Gradle 提取:

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
Run Code Online (Sandbox Code Playgroud)

另外,我得到的记录器是ch.qos.logback.classic.Logger-Gradle doco提到的:“ Logger ...扩展了SLF4J Logger接口并添加了一些Gradle特定的方法 ”,因此我希望看到一些Gradle特定的记录类。

Gradle配置是Gradle输出源文件中注释处理器的版本,以构建/分类使javadoc失败。如何解决?

谢谢,

Mer*_*erk 0

一个可能有帮助的黑客:

您可以创建一个新的自定义 gradle 任务,所有编译任务都依赖该任务,并根据 -i、-d 等是否传递给 gradle 来设置系统环境变量(也许读取logging.captureStandardOutput的值就可以解决问题) 。

然后在注释处理器启动时读取该环境变量,并使用它有条件地写入标准输出。