[英]How can I output from java code to the Jenkins console?
我添加了许多System.out.println()
Java 代码。 其中之一位于“main”方法的开头。 当我在 NetBeans 中启动代码时,我看到所有这些println
的控制台输出。
当我在 Jenkins/ant 中将 fork&spawn 设置为 true(作为单独的任务)启动该类时,它会运行,但没有将 println 放入 Jenkins 控制台。
我可以让 System.out.println 写入 Jenkins 控制台吗?
我发现了一个有趣的修复 Jenkins 问题,他们说“对象模型的变量‘out’可用于将消息写入构建控制台”如何?
编辑:在同一个项目中,未生成的应用程序将其stdout
输出stdout
到 Jenkins 控制台中。
编辑 2. 请注意,我想输出到 Jenkins 控制台,而不是文件。
如果您重写方法执行,则使用 BuildListener 实例获取记录器实例并使用打印方法写入。 像这样
@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()
方法,您可以使用它在控制台输出中打印。 System.out.println
不会被重定向到 Jenkins 中的控制台输出。
如果您想将进程的输出重定向到 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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.