如何解决需要解析日志并创建 2 个受控组,其中一组具有另一组的文本
我想知道是否有人可以帮助我解决解析问题。我一直致力于解析我使用受控组(Description、FooBar 等)的特定日志。解析这个日志是一个很大的挑战。
日志文件如下所示:
2021-02-10T09:0022.041-05:00 | Info | TransactionGUID=yyyy1234-12a1-1a99-1234-01ab1ab12abc | TransactionID=123456 | Saving uploaded file to shared folder \\foobar\foo\fil\ENV1\ABMylocingZone\TIMS\FileTemplates\12345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
我需要放置这组文字:
正在将上传的文件保存到共享文件夹\foobar\foo\fil\ENV1\ABMylocingZone\TIMS\FileTemplates\12345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
进入“描述”捕获组。
我需要放置这组文字:
12345678
在“FooBar”捕获组中。
以下是我目前能想到的。如果我尝试添加 FooBar 控制组(从下面的规则中省略),我将失去部分描述控制组。由于我正在使用的应用程序,我需要使用 GROK Debugger 来创建和调试我的规则:
[A-Za-z0-9]{0,7}%{SPACE}%{TIMESTAMP_ISO8601:dateTime}%{SPACE}\|%{SPACE}%{LOGLEVEL:Loglevel}%{SPACE}\|%{SPACE}TransactionGUID=%{UUID:GUID}%{SPACE}\|%{SPACE}TransactionID=%{NUMBER:TransactionId}%{SPACE}\|%{SPACE}(?<Description>(?<=\|\s).*(?=\)?))
解决方法
简短版本:
这条消息...
MyGroup12345679ContainsInfo
... 被 message
组捕获,其包含的编号被 hidden_message
组捕获。
(?<message>[a-zA-Z]+(?<hidden_message>%{NUMBER})[a-zA-Z]+)
完整版:
至于您的确切日志,我会这样解析:(出于测试目的,必须将 UUID
替换为 NUMBER
)
grok {
message => [
"%{TIMESTAMP_ISO8601:dateTime}%{SPACE}\|%{SPACE}%{LOGLEVEL:Loglevel}%{SPACE}\|%{SPACE}TransactionGUID=%{NUMBER:GUID}%{SPACE}\|%{SPACE}TransactionID=%{NUMBER:TransactionId}%{SPACE}\|%{SPACE}(?<Description>.*(\\(?<FooBar>[0-9]+)_[^\\]+\.[a-zA-Z0-9]+).*)","+ the pattern you are using now,unless there is always a path to match there"
]
}
测试日志:
2021-02-10T09:0022.041-05:00 | Info | TransactionGUID=82147 | TransactionID=123456 | Saving uploaded file to shared folder \\foobar\foo\fil\ENV1\ABMylocingZone\TIMS\FileTemplates\12345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
description
部分解释:
.* # greedily consumes characters
( # matches a filename beginning with a number :
\\(?<FooBar>[0-9]+) # one "\",a number,_[^\\]+ # one _,anything but a "\" once or more
\.[a-zA-Z0-9]+ # a file extension
)
.* # the rest of it
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。