我有java代码与许多System.out.println()
添加。其中之一是在"main"方法的开始处。当我在NetBeans中启动代码时,我看到控制台输出所有这些println
。
当我在Jenkins/ant中启动类时,将fork&spawn设置为true(作为一个单独的任务),它运行,但没有将println放入Jenkins控制台。
我可以让System.out.println写到Jenkins控制台吗?
我发现了一个有趣的修复Jenkins问题,他们说"一个变量'出'的对象模型可以用来写消息到构建控制台"如何?
编辑:在同一个项目中,没有生成的应用程序将它们的stdout
输出到Jenkins控制台OK.
编辑2。请注意,我想要输出到Jenkins控制台,而不是文件。
如果您重写了方法,则使用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;
}
Jenkins的TaskListener有一个方法getLogger()
,你可以使用它在控制台输出中打印。在Jenkins中,System.out.println
不会重定向到控制台输出。
如果你想将输出从进程重定向到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);
}
}