Estoy tratando de hacer que logrotate funcione en mi VPS para rotar mis archivos apache semanalmente. Actualmente el contenido del archivo de configuración apache2 es como tal.
"/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
}
Lo he dejado durante dos semanas y nada ha cambiado hasta donde puedo decir. Cuando lo simulo desde la línea de comando obtengo el siguiente resultado.
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
¿Alguna idea de lo que Iv'e configuró mal?
Mi archivo de estado también está vacío :(
user@geneva:~$ cat /var/lib/logrotate/status
logrotate state -- version 2
Actualizar
¡Eliminé el archivo de estado e hice una ejecución forzada de logrotate y ahora los registros parecen haber sido rotados y el archivo de estado parece más prometedor!
sudo rm /var/lib/logrotate/status
sudo /usr/sbin/logrotate -f /etc/logrotate.conf
/var/lib/logrotate.status
con una fecha de al menos una semana de antigüedad. Actualicé la respuesta con un ejemplo ...Esto puede deberse a que los archivos de registro están vacíos.
Esta situación puede ocurrir porque Apache todavía escribe en un archivo de registro anterior, que ha sido renombrado sin reiniciar Apache. Entonces access.log se convirtió en access.log.1 y Apache escribe en él.
O tiene un problema con el tiempo de creación del registro:
fuente
notifempty
línea para tratar con los registros de 0 bytes que no rotan. Luego, querrátouch
un nuevo archivo de registro antes de cada prueba para que logrotate tenga algo que rotar.Me enfrenté a un problema similar, excepto que ninguna de estas respuestas me ayudó. Mi archivo de registro era enorme y viejo, mi configuración era 100% correcta y válida, eliminar el archivo de estado no ayudó.
Resultó que el problema estaba en entradas de logrotate duplicadas . Cuando ejecuto logrotate manualmente en mi archivo de configuración solo así:
no mostró ningún error, solo dijo:
Todavía no sé por qué en realidad. Pero cuando ejecuto un comando logrotate completo como ese:
Tengo la siguiente línea:
Resultó que el archivo de configuración logrotate para mi servicio contenía las entradas para rotar los registros de acceso nginx, así como los registros del servicio en sí. Y eso entró en conflicto con la configuración de logrotate de ngnix, que tiene una regla para todas las entradas nginx:
Entonces, la solución para mi caso es bastante simple: solo tuve que eliminar la regla de rotación de registros nginx en conflicto de mi configuración .
Supongo que logrotate comenzó a abortar el procesamiento del archivo en conflictos de reglas solo desde una de las versiones más recientes. Recibo este error con v.3.8.7 pero en v.3.7.8 con la misma configuración conflictiva escribe el mismo error pero gira bien. Aunque no pude encontrar ningún registro de eso en el registro de cambios logrotate.
fuente
Intente ejecutar
sudo logrotate -f --verbose /etc/logrotate.d/apache2
Vea lo que está escrito en la consola y arregle todo lo que esté mal.fuente
Tenía una máquina Debian 7 que, después de una actualización del sistema, ya no giraba los registros de correo. Todos los demás registros, excepto los de correo, se rotaron correctamente. Descubrí que los registros de correo habían crecido varios gigabytes. Siempre logré la rotación de registros a través de Webmin. Entonces, corriendo
logrotate -d /etc/logrotate.conf
vi el siguiente mensaje:Ignoring rsyslog.dpkg-old, because of .dpkg-old ending
¡Resultó que mis entradas de rotación de correo estaban enlistadas
/etc/logrotate.d/rsyslog.dpkg-old
, lo cual fue ignorado! Cambiar el nombre del archivo corrigió la rotación del archivo de registro :-)fuente