【问题标题】:Log messages are not showing up in groovy jenkins script日志消息未显示在 groovy jenkins 脚本中
【发布时间】:2020-10-14 04:54:30
【问题描述】:

我需要使用日志记录功能扩展我的 jenkins 脚本,并尝试为此目的使用 java.util.logging。下面的 sn-p 显示了我已经做了什么。

import java.util.logging.*

@NonCPS
def tryLogging() {
        println("Start")
        Logger logger = Logger.getLogger("Test")
        logger.setLevel(Level.INFO);
        logger.setUseParentHandlers(false);
        ConsoleHandler handler = new java.util.logging.ConsoleHandler()
        handler.setFormatter(new SimpleFormatter())
        logger.addHandler(handler)      
        logger.info("Hello")
        logger.severe("Severe")
        println("End")
}

tryLogging()

我的控制台日志现在显示以下内容:

[Pipeline] Start of Pipeline
[Pipeline] echo
Start
[Pipeline] echo
End

确实没有可见的日志消息,我不知道我做错了什么。谁能在这里解释一下如何使控制台日志可见?我也不确定我是否必须在这里使用这个@NonCPS

[管道] 管道结束 完成:成功

【问题讨论】:

    标签: jenkins jenkins-groovy java.util.logging


    【解决方案1】:

    ConsoleHandler 打印到 System.err。修改您的脚本以使用

    System.err.println("Start") 并查看“开始”是否仍显示在控制台中。如果不是,那么问题出在ConsoleHandler is writing to a stream you can't see

    要更改的另一件事是您需要ensure your named logger can't be garbage collected。根据您使用的 Java 版本,记录器可能会被垃圾收集,并且您可能会丢失附加的处理程序。

    我也不确定是否必须在这里使用这个@NonCPS?

    What is @NonCPS annotation in Jenkins pipeline script 包含您可能会觉得有用的信息。

    【讨论】:

    • 非常感谢您的链接。我已经在这里搜索过,但必须提出正确的问题。如果解决方案对我有用,我现在将尝试。
    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多