Zope / Plone: logrotate + cronjob in buildout konfigurieren
Um die Logdateien eines Plone Buildouts rotieren zu lassen, kann man wie unter Linux üblich logrotate verwenden. Dies lässt sich auch bequem über buildout konfigurieren.
Logrotate-Konfiguration einrichten
Man kann Logrotate mnauell oder besser, mit den anderen Konfiguration in der buildout.cfg konfigurieren.
Logrotate in der buildout.cfg konfigurieren
In der buildout.cfg fügen wie folgenden Part hinzu:
[logrotate]
recipe = collective.recipe.template
input = templates/logrotate.conf
output = ${buildout:directory}/etc/logrotate.conf
Jetzt benötigen wir ein Template welches unsere Logrotate-Konfiguration enthält:
daily
missingok
rotate 14
#mail admin@inqbus.de
compress
delaycompress
notifempty
size 1k
${buildout:directory}/var/log/instance.log ${buildout:directory}/var/log/instance-Z2.log {
sharedscripts
postrotate
/bin/kill -USR2 $(cat ${buildout:directory}/var/instance.pid)
endscript
}
Hier gegebenenfalls, die Pfade zu den einzelnen Logdateien anpassen oder erweitern und in der Datei ./templates/logrotate.conf ablegen.
Cronjob für logrotate
Wir können nun einfach einen Cronjob per Hand anlegen oder besser noch, dies auch gleich wie folgt in der buildout.cfg konfigurieren.
Cronjob für Logrotate in der buildout.cfg konfigurieren
Um jeden Tag die Log-Dateien um 00:05 rotieren zu lassen, erzeugen wir folgenden Cronjob.
[logrotatecronjob]
recipe = z3c.recipe.usercrontab
times = 5 0 * * *
command = /usr/sbin/logrotate -s ${buildout:directory}/var/log/logrotate-status ${buildout:directory}/etc/logrotate.conf
Buildout-Konfiguration aktivieren
Um die beiden definierten Parts zu aktivieren nehmen wir diese im Abschnitt [buildout] in die liste der Parts auf:
[buildout]
parts =
zope2
productdistros
instance
zopepy
backup
logrotate
logrotatecronjob
Nach aufruf von ./bin/buildout haben wir nun die Konfiguration abgeschlossen.
missingok
rotate 14
#mail rk-service@fbeit.htwk-leipzig.de
compress
delaycompress
notifempty
size 1k
#${buildout:directory}/var/log/zeo.log {
# postrotate
# ${buildout:bin-directory}/zeo logreopen
# endscript
#}
${buildout:directory}/var/log/instance.log ${buildout:directory}/var/log/instance-Z2.log {
sharedscripts
postrotate
/bin/kill -USR2 $(cat ${buildout:directory}/var/instance.pid)
endscript
}