jenkins:你们是怎么在控制台实时打印服务启动日志的?
最近,在做服务的自动化部署时遇到一个小需求,测试童鞋希望能够直接在jenkins的控制台上看到服务的启动日志,用户是上帝,你们想要那就给你们做出来好了。
那么,问题来了,怎么才能在jenkins控制台上实时展示服务的启动日志呢?
经常登录linux服务器查看日志的童鞋会说我平时都是使用tail -f命令来查看服务的日志,是的,这里也不例外,想要在jenkins控制台实时打印服务启动日志还是使用tail -f命令。
不过,光用tail -f就足够了吗?
可以想一下,我们平时直接在服务器上查看实时日志时使用tail -f,当服务启动完成后tail命令是不会结束的,应用到jenkins上的表现则为任务hang住,永远结束不了,这样显然不行。所以就得想个办法让它自动退出tail。
那么用什么办法呢?
什么时候退出呢?
当然是服务启动完成时就要退出,那么什么时候才算服务启动完成呢?对于这个问题,大家应该都很清楚,当然是看到服务启动成功或者失败的标志性输出后服务的启动就算完成了。
所以,思路就有了,我要看到服务启动成功或失败的标志后就退出日志的打印。
那么有没有一个命令可以检测我想要的内容时退出命令呢?
当然有,这就是强大的sed命令。sed的q参数可以帮助我们在检测到想要的内容后退出,语法如下
sed '/xxx/q'
由于服务启动不能确保是成功还是失败,所以我们想要检测的内容可能是成功标志也有可能是失败标志,所以sed命令要写成下面这样
sed '/成功标志日志|失败标志日志/q'
然后结合tail命令,最终的命令如下
tail -f xxx.log | sed '/成功标志日志|失败标志日志/q'
好了,通过tail和sed最终我们实现了在jenkins控制台实时打印服务启动日志并在服务启动完成后退出日志打印的目的,你学会了吗?