【问题标题】:How to redirect "println" commands output to a file in Groovy如何将“println”命令输出重定向到 Groovy 中的文件
【发布时间】:2019-10-23 10:19:39
【问题描述】:

我想将 println 命令重定向到另一个文件,该命令是构建名称、状态、时间等作业的详细信息。

下面是我想要重定向到文件的代码的 sn-p。

def lastBuildEnvVars = lastbuild.getEnvVars()
println 'Product Name : ' + lastBuildEnvVars['PRODUCT_NAME'] + 'Version : ' + lastBuildEnvVars['PRODUCT_VERSION'] + 'Result: ' + lastbuild.result + 'Time: ' + lastbuild.timestampString2 + '\n'
println 'Result: ' + lastbuild.result + '\nTime: ' + lastbuild.timestampString2

println 的输出为

Current Product Name : OMA_KENAN_FX_READINESS
Product Version : 
Result: SUCCESS
Time: 2019-08-31T01:25:26Z

【问题讨论】:

  • 我不知道它在 jenkins 中是否有效,但在通常的 groovy 脚本中,您只需重新定义:out=new PrintStream("/11/111.out", "UTF-8")。在此之后所有println 命令将打印到文件中。

标签: groovy jenkins-groovy groovyshell groovy-console


【解决方案1】:
    def logFile = new File("output.log")
    logFile.append('Product Name : ' + lastBuildEnvVars['PRODUCT_NAME'] + 'Version : ' + lastBuildEnvVars['PRODUCT_VERSION'] + 'Result: ' + lastbuild.result + 'Time: ' + lastbuild.timestampString2 + '\n')
    logFile.append('Result: ' + lastbuild.result + '\nTime: ' + lastbuild.timestampString2)

您可以将一行分配给字符串变量,然后执行:

    def entry = 'Result: ' + lastbuild.result + '\nTime: ' + lastbuild.timestampString2
    println(entry)
    logFile.append(entry)

然后您可以编写一个名为 logIt(entry) 的方法来执行打印和写入文件:

    def logIt(entry) {
        //you have to let this method know about the file object somehow
        println(entry)
        logFile.append(entry)
    }

等等等等。

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2022-01-24
    • 2012-11-01
    相关资源
    最近更新 更多