Log-Dateien
Zope erstellt drei verschiedene Arten von Log-Dateien:
- eventlog
- Ereignisse, die Debug-Informationen über in der Zope-Instanz verwendete Produkte enthalten.
- logger access
- Zugriffe, mit denen sich Site-Statistiken produzieren lassen.
- logger trace
- Detaillierte Informationen über Server-Anfragen (requests).
Die Standardkonfiguration für eine Log-Datei sieht so aus:
<eventlog>
level info
<logfile>
path /home/veit/myproject/var/log/instance1.log
level info
</logfile>
</eventlog>
Mögliche Angaben für level sind critical, error, warn, info, debug und all.
Handler
Jeder der drei logger -Abschnitte der zope.conf kann mehrere handler-Abschnitte enthalten.
Fünf verschiedene Handler lassen sich angeben:
- logfile
- syslog
- win32-eventlog
- http-handler
- email-notifier.
Um z.B. eine E-Mail-Benachrichtigung bei Fehlern zu erhalten kann der Eintrag folgendermaßen geändert werden:
<eventlog>
level info
<logfile>
path ${buildout:directory}/var/log/instance1.log
level info
</logfile>
<email-notifier>
from zope@veit-schiele.de
to admin@veit-schiele.de
subject "Zope Error"
level error
</email-notifier>
</eventlog>
Mögliche Angaben für jeden Handler sind in parts/zope2/lib/python/ZConfig/components/logger/handlers.xml beschrieben.
Packen und Rotieren der Log-Dateien
Ändern Sie die deployment.cfg folgendermaßen:
[buildout] parts = … logrotate … [logrotate] recipe = collective.recipe.template input = templates/logrotate.conf output = ${buildout:directory}/etc/logrotate.confMit collective.recipe.template lassen sich Textdateien aus einer Vorlage generieren, wobei die buildout-Variablen verwendet werden können.
Dabei können Sie ein Verzeichnis templates und darin eine logrotate.conf-Datei erstellen, z.B. mit folgendem Inhalt:
daily missingok rotate 14 mail zope-logs@veit-schiele.de compress delaycompress notifempty size 1k ${buildout:directory}/var/log/zeo.log { postrotate ${buildout:bin-directory}/zeo logreopen endscript } ${buildout:directory}/var/log/instance1.log ${buildout:directory}/var/log/instance1-Z2.log { sharedscripts postrotate /bin/kill -USR2 $(cat ${buildout:directory}/var/instance1.pid) endscript }- Damit werden alle Log-Dateien in /home/veit/myproject/var/log/ täglich rotiert;
- Log-Dateien älter als 14 Tage werden gelöscht.
- Die Log-Dateien werden an die E-Mail-Adresse zope-logs@veit-schiele.de gesendet.
- Weitere Informationen zu logrotate erhalten Sie mit man logrotate.
Anmerkung: Unter Windows steht Ihnen logrotate nicht zur Verfügung. Hier können Sie sich ein eigenes Batch-Skript schreiben, das Ihnen die Log-Dateien rotiert. Als Vorbild kann z.B. folgendes Skript genommen werden: http://www.sprint.net.au/~terbut/usefulbox/apachelogrot.htm
Cron
Ein Eintrag in die crontab mit crontab -e könnte z.B. so aussehen:
7 0 * * * /usr/sbin/logrotate -s /home/veit/myproject/var/log/logrotate-status /home/veit/myproject/etc/logrotate.conf
Damit wird täglich um 0:07 Uhr logrotate mit den Einstellungen von /home/veit/myproject/etc/logrotate-zope aufgerufen und ein Statusbericht in /home/veit/myproject/var/log/logrotate-status geschrieben.
Dieser Eintrag kann auch automatisiert mit dem Rezept z3c.recipe.usercrontab erstellt werden. Hierzu wird in der deployment.cfg folgendes eingetragen:
[buildout]
parts =
…
logrotate-crontab
…
[logrotate-crontab]
recipe = z3c.recipe.usercrontab
times = 7 0 * * *
command = /usr/sbin/logrotate -s ${buildout:directory}/var/log/logrotate-status ${buildout:directory}/etc/logrotate.conf

