php – So konvertieren Sie das reguläre Nginx-Protokollformat in das Apache-Protokollformat
大家讲道理
大家讲道理 2017-05-16 13:13:53
0
1
417

Nginx-Protokollformat

log_format  access  '$remote_addr - [$time_local] "$request" '
             '$status $body_bytes_sent $request_time "$http_referer" '
             '"$http_user_agent" - $http_x_forwarded_for';

Das Folgende ist das reguläre Protokollextraktionsformat von Nginx

log_pattern = r'^(?P<remote_addr>.*?) - \[(?P<time_local>.*?)\] "(?P<request>.*?)"' \
              r' (?P<status>.*?) (?P<body_bytes_sent>.*?) (?P<request_time>.*?)' \
              r' "(?P<http_referer>.*?)" "(?P<http_user_agent>.*?)" - (?P<http_x_forwarded_for>.*)$'

request_uri_pattern = r'^(?P<request_method>(GET|POST|HEAD|DELETE)?) (?P<request_uri>.*?) (?P<server_protocol>HTTP.*)$'

Mein Apache-Protokollformat ist wie folgt:

123.125.71.55 - - [14/Apr/2017:00:00:15 +0800] "GET /article/511615 HTTP/1.1" 200 11238
111.206.221.100 - - [14/Apr/2017:00:00:16 +0800] "POST /baidutj/tj HTTP/1.1" 302 -

Wie man den obigen regulären Ausdruck in einen regulären Ausdruck umwandelt, den ich verwenden kann,

Ich habe es lange versucht, bekam aber immer wieder Fehler,

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

Antworte allen(1)
伊谢尔伦
log_pattern = (r'^(?P<remote_addr>\S+) - - \[(?P<time_local>[^]]+)\] "(?P<request>.*?)"'
              ' (?P<status>\d+) (?P<body_bytes_sent>\d+)')
request_uri_pattern = r'"(?P<request_method>(?:GET|POST|HEAD|DELETE)?) (?P<request_uri>\S*) (?P<server_protocol>HTTP\S*?")'
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage