zoukankan      html  css  js  c++  java
  • 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控制台实时打印服务启动日志并在服务启动完成后退出日志打印的目的,你学会了吗?

  • 相关阅读:
    操作系统丶并发并行和线程
    网络基础补充,断点续传,以及如何添加进度条
    python小游戏之贪吃蛇
    python2和3的区别丶网络编程以及socketserver多线程
    面向对象之套接字(socket)和黏包
    面向对象多继承和网络编程
    约束,自定义异常,加密,日志
    方法和函数,isinstance/issubclass/type以及反射
    面向对象之组合的补充,主动调用其他类的成员,特殊成员
    关于卡尔曼滤波和粒子滤波最直白的解释
  • 原文地址:https://www.cnblogs.com/mycftest/p/13889547.html
Copyright © 2011-2022 走看看