需要解析日志并创建 2 个受控组,其中一组包含另一组的文本
Need to parse a log and create 2 controlled groups where one group has text of the other group
我想知道是否有人可以帮助我解决解析问题。我一直致力于解析我使用受控组(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\FileTemplates345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
我需要放置这组文字:
Saving uploaded file to shared folder \foobar\foo\fil\ENV1\ABMylocingZone\TIMS\FileTemplates345678_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\FileTemplates345678_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
我想知道是否有人可以帮助我解决解析问题。我一直致力于解析我使用受控组(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\FileTemplates345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
我需要放置这组文字:
Saving uploaded file to shared folder \foobar\foo\fil\ENV1\ABMylocingZone\TIMS\FileTemplates345678_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\FileTemplates345678_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