我陷入了日志解析的困境。我在日志文件中有此行。一切都以行结尾\n
[2018.07.10 00:30:03:125] VersionInfo\886
[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->IncomingTime\16
[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->IncomingData\397
[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->ThreadID\8
[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->RequestExecuteStart\16
[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->RequestInfo\25
[2018.07.10 00:30:03:109][TraceID: 8HRWSI105YVO91]->CheckUserInfo\139
[2018.07.10 00:30:03:218]->Start RTS
[2018.07.10 00:30:03:640][TraceID: 8HRWSI105YVO91]->StartExecuteTask\35
[2018.07.10 00:30:03:749][TraceID: 8HRWSI105YVO91]->EndExecuteTask\36
[2018.07.10 00:30:03:749][TraceID: 8HRWSI105YVO91]->RequestExecuteEnd\16
[2018.07.10 00:30:03:749][TraceID: 8HRWSI105YVO91]->OutgoingData\26651
我想分析组中的每一行-时间,traceid(如果存在)和块名。要选择日期时间(始终存在),我使用\[(.*?)\]。这是第一组。下一个必须为traceid(如果存在)。获取分隔符(?:\[|->| )-[或->或。组选择与第一个相同\[(.*?)\]。然后转到第三组,其名称为块名([a-zA-Z ]+)-结尾的任何文本均不带数字。
我对如何连接所有内容完全感到困惑。我想要得到的是:
第1组-日期时间
第2组-Traceid | 零
组3-块名称
萧十郎
相关分类