我想在我的自定义Gradle插件中配置slf 4j-log4j,但无法使其工作。日志输出不会打印到控制台
我的配置如下所示:
我在我的Gradle插件项目中的**/src/main/resources下创建了一个“log4j2.xml”**
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="Audit" fileName="./logs/audit.log" immediateFlush="false" append="false">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="Audit"/>
</Root>
</Loggers>
</Configuration>
生成分级
dependencies {
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.17.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.17.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.17.2'
}
我现在从插件调用任务
project.tasks.register('log-test') {
Logger logger = LoggerFactory.getLogger(this.class)
logger.info('##### INFO #####')
logger.error('##### ERROR #####')
logger.debug('##### DEBUG #####')
}
我只能得到error & gradle标准输出:
> Task :logtest:log-test UP-TO-DATE
BUILD SUCCESSFUL in 144ms
8 actionable tasks: 8 up-to-date
##### ERROR #####
22:50:11: Execution finished 'log-test'.
我在StaticLoggerBinder类上放置了一个断点,以检查使用了哪个实现。看起来使用的是gradle默认值,而不是log4j:
1条答案
按热度按时间slhcrj9b1#
**不幸的是,我找到了答案:**github.com/gradle/gradle/issues/2408
另请参见:Gradle User Forums - Logging in Gradle Plugin
现在唯一的选择是替换整个日志记录:Gradle 8.0.2自定义日志记录
我编写了一个小的变通方案,这样就可以打印出我自己的类中的调试日志消息,而无需在控制台中显示所有gradle内部调试消息
现在可以将日志级别设置为“debug”,并将所有来自我的自定义插件类的日志消息记录到控制台: