gpt4 book ai didi

regex - Grok 模式解析 ESC 键

转载 作者:行者123 更新时间:2023-12-02 21:11:03 24 4
gpt4 key购买 nike

我正在写一个grok pattern解析 fluentd 中的日志的cinder-api ,一行是:

2015-09-17 17:44:49.663 ^[[00;32mDEBUG oslo_concurrency.lockutils [^[[00;36m-^[[00;32m] ^[[01;35m^[[00;32mAcquired semaphore "singleton_lock"^[[00m ^[[00;33mfrom (pid=30534) lock /usr/local/lib/python2.7/dist-packages/oslo_concurrency/lockutils.py:198^[[00m

^[[00;32m 和其他此类事件是 ASCII colour codes ,在终端中打印时打印如下:

我需要解析该行,并且可以在没有使用 ( tested ) 模式的颜色代码时执行此操作%{TIMESTAMP_ISO8601:时间戳}%{SPACE}%{LOGLEVEL:日志级别}%{SPACE}{NOTSPACE:api}%{SPACE}\[(?:%{DATA:request})\]%{SPACE} %{GREEDYDATA:消息}

如何修改 grok 模式以便能够解析彩色日志行?

我发现以下内容,如果它可以帮助任何人找到解决方案:

  • ^[ 实际上是 ESC key,八进制代码为\033,十六进制代码为\x1B,十进制ASCII代码为27,用^[<表示/strong> 也是。
  • 有一个fluentd plugin命名color-stripper它的作用相同,但对我不起作用,也不适合我的用例。

最佳答案

比字面转义字符更好的解决方案是遵循提供的链接中的提示:

  • Regular Expressions

    Grok sits on top of regular expressions, so any regular expressions are valid in grok as well. The regular expression library is Oniguruma, and you can see the full supported regexp syntax on the Onigiruma site.

  • Oniguruma Regular Expressions: 2. Characters
    \t 水平制表符 (0x09)
    \v 垂直制表符 (0x0B)
    \n 换行符 (0x0A)
    \r 返回 (0x0D)
    \b 退格 (0x08)
    \f 换页符 (0x0C)
    \响铃(0x07)
    \e 转义 (0x1B)

此外,颜色代码可以与不使用两位数字的其他视频属性混合。引用自XTerm Control Sequences :

CSI Pm m 字符属性 (SGR)。
Ps = 0 -> 正常(默认)。
Ps = 1 -> 粗体。
Ps = 2 -> 微弱、强度降低 (ISO 6429)。
Ps = 3 -> 斜体 (ISO 6429)。
Ps = 4 -> 带下划线。
Ps = 5 -> 闪烁(显示为粗体)。
Ps = 7 -> 逆。
Ps = 8 -> Invisible,即隐藏(VT300)。
Ps = 9 -> 划掉的字符 (ISO 6429)。
Ps = 2 1 -> 双下划线 (ISO 6429)。
Ps = 2 2 -> 正常(既不粗体也不微弱)。
Ps = 2 3 -> 非斜体 (ISO 6429)。
Ps = 2 4 -> 不带下划线。
Ps = 2 5 -> 稳定(不闪烁)。
Ps = 2 7 -> 正数(非逆数)。

您可能还会看到正常粗体下划线反向。最后,参数的数量不限于两个,并且参数是可选的。结果可能是

\e\[(\d*;)*(\d*)m

关于regex - Grok 模式解析 ESC 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33440366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com