Jenkins Log Parser 的不足

本文提到的Log parser是jenkins 的一个插件

Log Parser Plugin

存在的价值:jenkins 的console打印了太多的log,当报错信息发生时,不方便查看error的日志,经常会出现日志卡死,引用该插件可以方便做到根据过滤条件显示日志。

组成部分

log可以分块展示(error,warning,info),级别之后可以根据匹配的关键字,分配log到对应的块中。正如你所发现的它是存在一个rule,rule文件里定义了你扫描日志的规则。例如:

    ok /not really/
     
    # match line starting with 'error ', case-insensitive
    error /[Ee]rror/
    error /ERROR/
     
    # list of warnings here...
    warning /[Ww]arning/
    warning /WARNING/
     
    # create a quick access link to lines in the report containing 'INFO'
    info /INFO/
     
    # each line containing 'BUILD' represents the start of a section for grouping errors and warnings found after the line.
    # also creates a quick access link.
    start /BUILD/
  • error 块定义了log中出现Error或者error字眼,会将这部分log link到error里。同理 warning 和info也是。该规则定义支持正则表达式。
  • start块,定义了过滤出哪些log段,文中默认是出现BUILD。

配置部分

  1. 手动配置

    可以在全局配置中


    image

    然后在job的配置页面post-build Actions

    Jenkins Log Parser 的不足_第1张图片
    image

    这样在扫描日志的时候会应用你配置的rule。

  2. pipeline

     node {
         stage("log parser") {
             step([$class: 'LogParserPublisher', parsingRulesPath: "${JENKINS_HOME}/userContent/minimal_rules", useProjectRule: false, failBuildOnError: failBuildOnError, unstableOnWarning: unstableOnWarning])
         }
     }
    

pipeline的方式很简单,只需要在job的开头或者结尾的地方加上上述代码,就可以实现对整个output console进行分析。其中failBuildOnError参数的意思是当我出现Error的时候,我会将整个build的结果修改为fail。告知用户这个job有错误。一般我们把这个功能作为检查code 的duplicate,checkstyle等。

Sample

  1. write rule file

        error /Error/
        start /ZZM|TEST/
    
  2. write pipeline job

     try {
       node {
           stage("ZZM"){
            echo 'INfo: oh no'
            echo 'Error:zzm'
           }
           stage("adc"){
            echo 'Error: oh no'
           }
           stage("TEST"){
               echo 'Info ;222'
           }
            stage("TEST"){
               echo 'Error 444'
           }
       }
     } 
     finally {
       node {
         step([$class: 'LogParserPublisher', parsingRulesPath: "${JENKINS_HOME}/userContent/test_rule", useProjectRule: false, failBuildOnError: true, unstableOnWarning: true])
       }
     }
    
  3. result

Jenkins Log Parser 的不足_第2张图片
image

缺陷

自认为的缺陷,但是我相信使用的人也会遇到这部分需求。当我在大的pipeline中,单单log文件就几个G的情况下,无法针对某个指定的stage进行log分析,一旦log中出现检查点不过的情况立即停止,目前该插件无法做到。当然如果能够指定解析一个文件,也是能够解决这个问题。但是目前看下来并没有该功能。希望在未来的release中会有吧。

参考文档

github address

wiki 文档

你可能感兴趣的:(Jenkins Log Parser 的不足)