日志消息不会显示在groovy-jenkins脚本中



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

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

【管道】管道末端已完成:SUCCESS

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

System.err.println("Start"),并查看控制台中是否仍显示"启动"。如果没有,那么问题是ConsoleHandler正在写入一个你看不到的流。

另一件需要更改的事情是,您将希望确保您的命名记录器不会被垃圾收集。根据您使用的Java版本,记录器可能会被垃圾收集,并且您可能会丢失附加的处理程序。

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

Jenkins管道脚本中的@NonCPS注释包含您可能会发现有用的信息。

最新更新