我添加了许多System.out.println()
的java代码。其中一个是“主要”方法的开始。当我在NetBeans中启动代码时,我看到控制台输出包含所有这些println
。
当我在Jenkins / ant中使用fork& spawn设置为true(作为单独的任务)启动类时,它会运行,但是没有将println放到Jenkins控制台中。
我可以让System.out.println写入Jenkins控制台吗?
我找到了一个有趣的repaired Jenkins issue,他们说“对象模型的变量'out'可用于将消息写入构建控制台”How?
编辑:
在同一个项目中,未生成的应用程序将stdout
输出到Jenkins控制台中。
编辑2。 请注意,我想输出到Jenkins控制台,而不是文件。
答案 0 :(得分:2)
如果覆盖方法执行,则使用BuildListener实例获取logger实例并使用print方法写入。 喜欢这个
@Override
public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) {
// This is where you 'build' the project. /
// This also shows how you can consult the global configuration of the builder
listener.getLogger().println("Inside the Perform Method");
return true;
}
答案 1 :(得分:0)
TaskListener有一个方法getLogger()
,可以使用它在控制台输出中打印。不会将System.out.println
重定向到Jenkins中的控制台输出。
答案 2 :(得分:0)
如果要将输出从进程重定向到Jenkins控制台,例如因为您调用了一些写入System.out
的库代码,所以可以使用System.setOut
/ System.setErr
重定向任何调用的输出。
@Override
public void perform(Run<?, ?> run, FilePath workspace, Launcher launcher, TaskListener listener)
PrintStream outOriginal = System.out;
PrintStream errOriginal = System.err;
try {
System.setOut(listener.getLogger());
System.setErr(listener.getLogger());
System.out.println("Testing System.out");
// Call your code that writes to System.out by default
} finally {
System.setOut(outOriginal);
System.setErr(errOriginal);
}
}