0

我已经为我的日志记录目的定义了一个帮助文件,如下所示:

记录器.groovy

import groovy.transform.Field

@Field color = [
  reset   : "\033[0m",
  red     : "\033[31m",
  green   : "\033[32m",
  yellow  : "\033[33m",
  blue    : "\033[34m",
  magenta : "\033[35m",
  cyan    : "\033[36m"
]

def info(String str)
{
  ansiColor()
  {
    println("${color.green}${str}")
  }
}

然后我在我的主构建文件中使用它:

logger.info("Logging at info level")
logger.info("another log message")

正确执行此操作会将我的文本显示为绿色(此处无法模仿),但它也会打印很多垃圾:

输出:

[Pipeline] ansiColor
[Pipeline] {
[Pipeline] echo
Logging at info level
[Pipeline] }
[Pipeline] // ansiColor
[Pipeline] ansiColor
[Pipeline] {
[Pipeline] echo
another log message
[Pipeline] }
[Pipeline] // ansiColor

我怎样才能让它禁用所有无关的源代码行?我想在我的主脚本中启用该功能,我真的不需要每次我想记录一些东西时都需要它。

我曾尝试将 shebangs 放在 logger.groovy 文件的顶部,但无济于事。我的 jenkins 实例也在 Windows 上运行,这可能有助于解释原因。我也尝试过放入set +xinfo() 方法,但这只会导致以下异常,这可能是由于沙箱环境

groovy.lang.MissingPropertyException: No such property: set for class: logger

我不知道为什么我会遇到这样的困难。其他人只是处理它还是我在做一些不寻常的事情?

4

1 回答 1

1

https://github.com/jenkinsci/ansicolor-plugin#using-in-pipeline-workflows

TERM 是当 ansiColor 块在范围内时设置为颜色映射的变量。如果 TERM 不为空,我们已经在 ansiColor 块中,所以我们不需要重新添加它。

所以这是我对 ansicolor 日志的工作:

def info(String str) {
  if (env.TERM) {
    println("${color.green}${str}")
  } else {
    ansiColor {
      println("${color.green}${str}")
    }
  }
}

我不知道是否有可能摆脱“回声”的记录

于 2018-03-15T15:31:55.880 回答