colorscheme
我正在尝试使用 multitail 为我编写的程序的一些日志文件着色。我已经在其中创建了自己的程序,/etc/multitail.conf
并且能够为与单个单词匹配的非常简单的正则表达式着色。但是,我无法让更复杂的正则表达式工作:
(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+[Zz]?)
此正则表达式应该匹配从 Javascript Date.toISOString() 调用返回的 ISO 日期字符串。在多个网站 (regexp.com、regextester.com) 上测试此正则表达式时,它确实与我的日志文件中的时间戳匹配。然而,当我运行 时multitail -cS express /my/log/file
,简单的单词 regex 有效,但时间戳无效。
/etc/multitail.conf
以下是我的文件的相关部分:
# express-proxy logs
colorscheme:express:express-proxy log files
cs_re:red:(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+[Zz]?) # This does not
cs_re:yellow:Headers # This works fine
为什么它无法识别我的有效正则表达式?我是否需要以某种方式转义一个或两个值?
多尾 v6.4.2,Ubuntu 20.04 WSL2
示例日志文件:
2022-06-10T11:46:55.608Z | info | Incoming Request:
Client Address: ::1
Target-URL: https://www.uuidtools.com/api/generate/v5/namespace/ns:url/name/JohnLCarveth
method: GET
Request Body: {}
Headers: {"target-url":"https://www.uuidtools.com/api/generate/v5/namespace/ns:url/name/JohnLCarveth","user-agent":"PostmanRuntime/7.29.0","accept":"*/*","postman-token":"e680d0ad-a9c9-4348-a3ea-dede02a043e6","host":"localhost:3069","accept-encoding":"gzip, deflate, br","connection":"keep-alive"}
2022-06-10T11:46:55.783Z | info | Request Response
Status Code: 200
Elapsed Time: 175.78ms
Response Body: ["33ceb1c7-8ece-530f-b53a-006f4a32348f"]
答案1
正则表达式正确,但\d
无法识别符号multitail
。\d
用替换[0-9]
应该有效。
(PS:不知道为什么\d
无法识别。这在其他程序中也发生过。有人知道吗?)