如何从java代码输出到Jenkins控制台



我有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);
     }
}

相关内容

  • 没有找到相关文章

最新更新