如何在Gradle中创建日志文件

时间:2016-03-21 09:47:00

标签: gradle ant

我正在使用Gradle-2.11,我无法找到创建记录调试级别信息的日志文件的方法。我不希望通过将日志重定向到日志文件来通过命令行执行此操作。我希望Gradle代码就像Apache Ant的'记录'任务一样,这样我就可以将该代码放在我的build.gradle文件中,无论我想在哪里创建日志。

例如:如果我想将此ant任务转换为gradle,那么代码是什么:

<record name="${BuildLogPath}/${BuildLogFile}" append="no" loglevel="verbose" action="start"/>

1 个答案:

答案 0 :(得分:0)

Gradle与Ant(https://docs.gradle.org/2.11/userguide/ant.html

非常吻合

它不会自动记录每一步。我没有意识到这就是你所要求的。下面更新将生成输出,您可以手动记录。

ant.record(name: "${BuildLogPath}/${BuildLogFile}", append:false, loglevel: "verbose", action: "start")
ant.echo("start logging")

//... do stuff here

 ant.echo(message: "end logging")
 ant.record(name: "${BuildLogPath}/${BuildLogFile}", append:false, loglevel: "verbose", action: "stop")

这可能会更多地满足您的要求。注意:这是我从这个优秀的例子略微改编的东西:   http://themrsion.blogspot.com/2013/10/gradle-logging-writing-to-log-to-file.html

import org.gradle.logging.internal.*
String currentDate = new Date().format('yyyy-MMM-dd_HH-mm-ss-S')
String loggingDirectory = "${rootDir}/build/logs"
mkdir("${loggingDirectory}")
File gradleBuildLog = new File("${loggingDirectory}/${currentDate}_gradleBuild.log")

gradle.services.get(LoggingOutputInternal).addStandardOutputListener (new StandardOutputListener () {
    void onOutput(CharSequence output) {
        gradleBuildLog << output
    }
})

gradle.services.get(LoggingOutputInternal).addStandardErrorListener (new StandardOutputListener () {
    void onOutput(CharSequence output) {
        gradleBuildLog << output
    }
})