如何通过Groovy脚本向Jenkins进程标准输出写入消息
答案
完全可以在Groovy Script Console中编写代码输出内容到Jenkins进程的标准输出,容器化部署的官方Jenkins镜像默认保留了stdout输出日志的行为,不需要额外修改启动配置。
可直接运行的代码示例
方式1:直接写入JVM标准输出流
这是最直接的方式,和Java应用写stdout的逻辑完全一致:
// 打印普通字符串 System.out.println("[Script Console 自定义日志] 测试消息:输出到stdout " + new Date()) // 如果需要打印错误级别的内容,也可以写stderr System.err.println("[Script Console 自定义错误日志] 测试错误消息")
运行后上述内容会直接进入Jenkins主进程的标准输出/错误流,容器场景下会被容器运行时捕获。
方式2:通过Jenkins内置日志框架输出
如果碰到部分定制化镜像修改了System.out重定向规则的场景,可以使用Jenkins默认依赖的java.util.logging日志框架打印,默认配置下该框架的日志同样会输出到stdout:
def customLogger = java.util.logging.Logger.getLogger("custom.script.console") // 支持不同日志级别 customLogger.info("INFO级别自定义日志") customLogger.warning("WARNING级别自定义日志")
验证方法
- 单Docker部署场景:在宿主机执行
docker logs -f <Jenkins容器ID/名称>,执行完脚本后就能实时看到打印的自定义内容 - Docker Compose部署场景:在compose文件所在目录执行
docker compose logs -f jenkins即可查看 - 注意:这类直接输出到stdout的内容不会出现在Jenkins Web界面的「系统日志」页面中,该页面仅展示被持久化到本地日志文件的内容。
补充说明:手动执行
java -jar jenkins.war启动时默认所有日志输出到stdout,deb/rpm等原生安装包会修改日志规则将日志写入系统常规日志目录,官方维护的Jenkins容器镜像未修改该默认行为,所有stdout输出都可通过容器日志命令查看。
内容的提问来源于stack exchange,提问作者JuanD
相关产品推荐
相关产品推荐

