J'essaie de faire fonctionner logrotate sur mon VPS pour faire tourner mes fichiers apache chaque semaine. Actuellement, le contenu du fichier de configuration apache2 est tel quel.
"/var/www/user/site.com/logs/*.log" {
weekly
missingok
rotate 8
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
Je l'ai laissé depuis deux semaines maintenant et rien n'a changé pour autant que je sache. Lorsque je le simule à partir de la ligne de commande, j'obtiens la sortie suivante.
user@geneva:/var/lib/logrotate$ /usr/sbin/logrotate -d /etc/logrotate.d/apache2
reading config file /etc/logrotate.d/apache2
reading config info for "/var/www/user/site.com/logs/*.log"
Handling 1 logs
rotating pattern: "/var/www/user/site.com/logs/*.log" weekly (8 rotations)
empty log files are not rotated, old logs are removed
considering log /var/www/user/site.com/logs/access.log
log does not need rotating
considering log /var/www/user/site.com/logs/error.log
log does not need rotating
not running postrotate script, since no logs were rotated
Des idées sur ce qu'Iv'e a mal configuré?
Mon fichier d'état est également vide :(
user@geneva:~$ cat /var/lib/logrotate/status
logrotate state -- version 2
Mise à jour
J'ai supprimé le fichier d'état et j'ai effectué une exécution forcée de logrotate et maintenant les journaux semblent avoir été tournés et le fichier d'état semble plus prometteur!
sudo rm /var/lib/logrotate/status
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
/var/lib/logrotate.status
avec une date d'au moins une semaine. J'ai mis à jour la réponse avec un exemple ...Cela peut être dû au fait que vos fichiers journaux sont vides.
Cette situation peut se produire car apache écrit toujours dans un fichier journal précédent, qui a été renommé sans redémarrer apache. Ainsi, access.log est devenu access.log.1 et apache y écrit.
Ou vous avez un problème avec l'heure de création du journal:
la source
notifempty
ligne pour gérer les journaux de 0 octet qui ne tournent pas. Ensuite, vous voudreztouch
un nouveau fichier journal avant chaque test afin que logrotate ait quelque chose à faire pivoter.J'ai rencontré le même problème, sauf qu'aucune de ces réponses ne m'a aidé. Mon fichier journal était énorme et ancien, ma configuration était 100% correcte et valide, la suppression du fichier d'état n'a pas aidé.
Il s'est avéré que le problème était dans les entrées de rotation de journal en double . Lorsque j'exécute logrotate manuellement sur mon fichier de configuration uniquement comme ça:
il n'a montré aucune erreur, il a juste dit:
Je ne sais toujours pas pourquoi en fait. Mais quand j'exécute une commande logrotate complète comme ça:
J'ai eu la ligne suivante:
Il s'est avéré que le fichier de configuration logrotate pour mon service contenait les entrées pour la rotation des journaux d'accès nginx ainsi que les journaux de service lui-même. Et cela était en conflit avec la configuration ngnix logrotate, qui a une règle pour toutes les entrées nginx:
La solution pour mon cas est donc assez simple: je viens de supprimer la règle de rotation des journaux nginx en conflit dans ma configuration .
Je suppose que logrotate a commencé à abandonner le traitement du fichier sur les conflits de règles uniquement à partir de l'une des versions les plus récentes. J'obtiens cette erreur avec v.3.8.7 mais sous v.3.7.8 avec la même configuration conflictuelle, il écrit la même erreur mais tourne bien. Bien que je n'ai pu trouver aucune trace de cela dans le journal des modifications logrotate.
la source
Essayez d'exécuter
sudo logrotate -f --verbose /etc/logrotate.d/apache2
Voir ce qui est écrit dans la console et corrigez tout ce qui ne va pas.la source
J'avais une machine Debian 7 qui, après une mise à jour du système, ne faisait plus tourner les journaux de messagerie. Tous les autres journaux, sauf ceux du courrier, ont été correctement tournés. J'ai découvert que les journaux de messagerie avaient augmenté de plusieurs gigaoctets. J'ai toujours géré la rotation des journaux via Webmin. Puis, en cours d'exécution,
logrotate -d /etc/logrotate.conf
j'ai vu le message suivant:Ignoring rsyslog.dpkg-old, because of .dpkg-old ending
Il est apparu que mes entrées de rotation du courrier étaient répertoriées
/etc/logrotate.d/rsyslog.dpkg-old
, ce qui a été ignoré! Renommer le fichier a corrigé la rotation du fichier journal :-)la source