Wie ein benutzerdefiniertes Protokollformat für Nginx, so dass Anfrage geparsed und seine Teile getrennt protokolliert werden?Log geparste Anfrage mit Nginx
Wir liefern eine Bilddatei, um die Post zu zählen. Die URL zu dem Bild ist unterschiedlich, aber folgt die Regel:
http://www.server.com/counter/XXXXX/YYYYY/dailymail.gif
XXXXX - id E-Mail-Kampagne; YYYYY - Empfänger-ID.
Es gibt ein separates Protokoll für /counter
Lage, die Ich mag würde ein Format wie
XXXXX YYYYY DATETIME
Lage geben, sieht so aus
location ~* ^counter/([0-9]+)/([^/]+)/dailymail\.gif$ {
access_log /var/log/mailopened.log
alias /var/www/site.com/1x1.gif?cid=$1&uid=$2&type=daily;
}
Also habe ich die Werte in Variablen $ 1 und $ 2 . Wie kann ich sie im Log-Format verwenden?
Mit der jüngsten Version von nginx, können Sie die Aufnahmen einen Namen geben und die eingestellten Anrufe überspringen mit 'l ocation ~ * ^/counter/(? [0-9] +)/(? [^ /] +)/dailymail.gif $ {' –
kolbyjack
Guter Fang! PCRE-Version ist auch relevant - Sie können die neuesten Nginx und alte PCRE .. –
Guter Punkt. Bei einem alten pcre müssten Sie '? P <' anstatt nur '? <' Verwenden – kolbyjack