【发布时间】:2020-05-22 12:09:46
【问题描述】:
我有一个很容易回答的 Raku 语法问题。我不会解析日志文件并按日志条目取回条目日志条目。日志条目可以只是一行或多行字符串。
我的草稿代码如下所示:
grammar Grammar::Entries {
rule TOP { <logentries>+ }
token logentries { <loglevel> <logentry> }
token loglevel { 'DEBUG' | 'WARN' | 'INFO ' | 'ERROR' }
token logentry { .*? <.finish> }
token finish { <.loglevel> || $ }
}
这仅适用于第一行,因为在第二行中,第一行匹配消耗了日志级别,尽管我使用了 '.'在正则表达式 中,据我所知,这意味着非捕获。
以下是日志示例:
INFO 2020-01-22T11:07:38Z PID[8528] TID[6736]: Current process-name: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
INFO 2020-01-22T11:07:38Z PID[8528] TID[6736]: Session data:
PID: 1234
TID: 1234
Session: 1
INFO 2020-01-22T11:07:38Z PID[8528] TID[6736]: Clean up.
即使对于多行日志条目,什么是正确的方法来取回日志条目? 谢谢!
【问题讨论】: