Apache2Piwik Log_Format


bauchinj

Erfahrenes Mitglied
#1
Hallo

Ich verwende das Tool Apache2Piwik um meine Domains mitzuloggen... hat alles wunderbar funktioniert, solange bis ich das Loggingformat umgestellt habe von 'combined' auf 'vhost_combined'...
In settings.py steht, dass dies der Wert ist wie in /etc/apache2/apache.conf, trage ich diesen ein, so erhalte ich einen Fehler:

Code:
Traceback (most recent call last):
  File "/usr/local/Apache2Piwik/apache2piwik.py", line 87, in <module>
    regexpr = re.compile(p.create_regexpr(s.LOG_FORMAT))
  File "/usr/lib/python2.6/re.py", line 190, in compile
    return _compile(pattern, flags)
  File "/usr/lib/python2.6/re.py", line 245, in _compile
    raise error, v # invalid expression
sre_constants.error: redefinition of group name 'url' as group 10; was group 1
Hab schon alles mögliche versucht, aber verstehe im Moment nicht wirklich, was es damit auf sich hat!? Es muss auf alle Fälle was mit dem LOG_FORMAT zu tun haben, da alles funktioniert, wenn ich combined verwende


danke für eure Hilfe!
 

deepthroat

Erfahrenes Mitglied
#2
Hi.

Offenbar enthält der reg. Ausdruck eine benannte Gruppe namens "url'. Anscheinend wird versucht diese Gruppe doppelt zu definieren - was nicht erlaubt ist und dementsprechend zu einer Ausnahme führt.

Welche Version hast du denn?

Wie sieht der reg. Ausdruck aus?

Gruß
 

deepthroat

Erfahrenes Mitglied
#4
Ich verwende version 1.0 vom Juni 2011

der reg. Ausdruck:
"%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""
Das ist das LOG Format. Der reg. Ausdruck der von create_regexpr() generiert wird, sieht so aus:
Python:
'^(?P<url>.*?):\\d{1,5} (?P<ip>(\\d{1,4}.){3}\\d{1,4}) (-|[\\w\\.]*) (?P<idvisitor>-|(\\w|%|=|,| )+) \\[(?P<datetime>\\d{2}/[a-zA-Z]{3}/\\d{4}:\\d{2}:\\d{2}:\\d{2} (\\+|-)\\d{4})\\] "(GET|POST) (?P<url>.*?) ?(HTTP/0.9|HTTP/1.0|HTTP/1.1|)" (200|201|202|203|204|205|206) (-|\\d+) "(?P<referer>.*?)" "(?P<user_agent>.*?)"\n$'
Wie man sieht wird für %v und für %U der gleiche reg. Ausdruck generiert.

Ändere in src/apache_log_format_parser.py Zeile 20 von
Python:
v = '(?P<url>.*?)'
in
Python:
v = '(?P<servername>.*?)'
Evtl. solltest du dieses Problem noch hier https://github.com/clearcode/Apache2Piwik/issues melden.

Gruß