繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM