【发布时间】:2016-02-14 08:29:49
【问题描述】:
我已更改我的 nginx 日志以显示自定义日志而不是默认日志。我添加了两个字段 $request_time 和 $upstream_response_time。我正在使用 PHP 来解析这个。
我不擅长正则表达式,但我尝试修改从Parse Apache log in PHP using preg_match 获取的另一个正则表达式
那里的正则表达式:
$regex = '/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) "([^"]*)" "([^"]*)"$/';
我不擅长正则表达式,所以这就是我想要做的:
$pattern = '/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) "([^"]*)" "([^"]*)"$ ^(\S+) ^(\S+) /';
我的输入看起来像这样:
$line = "127.0.0.1 - - [12/Nov/2015:13:39:19 -0500] \"GET /mj/feed/ HTTP/1.1\" 200 3276 \"-\" \"rogerbot/1.0 (http://www.moz.com/dp/rogerbot, rogerbot-crawler@moz.com)\" 0.254 0.254";
上面的两个额外字段是0.254 和0.254。
所以我正在尝试获取[14] = 0.254 和[15] = 0.254。
我尝试通过实时在线正则表达式工具玩弄正则表达式,但没有任何运气。
任何帮助将不胜感激。
【问题讨论】:
标签: php regex parsing logging nginx