Como alternativa, puede canalizar la salida a través de herramientas diseñadas con el objetivo principal de mantener conjuntos de archivos de registro rotados automáticamente y limitados por tamaño, como:
- El
multilog
de Dan Bernstein de daemontools multilog
de Bruce Guenter de daemontools-encores6-log
de Laurent Bercot de s6- El
svlogd
de Gerrit Pape de runit - El
tinylog
de Wayne Marshall del perpetrador - Mi
cyclog
de nosh
Herramientas para luego procesar multilog
Los conjuntos de archivos de registro de formato incluyen, entre otros:
multilog-watch
de Russ Allberylogrange
- El
multilog-stamptail
de Paul Kremer - Mi
follow-log-directories
de nosh - Mi
export-to-rsyslog
de nosh
Lecturas adicionales
- Jonathan de Boyne Pollard (2015). "Inicio sesión". La familia daemontools . Respuestas frecuentes.
- Jonathan de Boyne Pollard (2016). No use
logrotate
onewsyslog
en este siglo. . Respuestas frecuentes. - https://unix.stackexchange.com/a/326166/5132
el rotatelogs
herramienta enviada con apache (en el bin
dir) (ver documentos) toma la entrada de stdin y rota el registro después de una cantidad específica de tiempo
Tuve un problema similar e inicialmente descarté logrotate pero resultó que logrotate en realidad puede hacer esto bien, la directiva clave es "copytruncate ". Por alguna razón, ese término no apareció en ninguna de las búsquedas en Google que hice, por lo que estoy agregando esta respuesta para aclarar exactamente cómo usarlo en este caso.
El truco es que esto solo funciona si la redirección se hace con ">> " (añadir) en lugar de "> " (crear).
Archivo de configuración (truncado.cfg):
/tmp/temp.log {
size 10M
copytruncate
rotate 4
maxage 100
}
Programa de prueba (nunca abandona el archivo). Puede ver cómo se llena el disco y, aunque la eliminación del archivo de registro parece funcionar, en realidad no liberará espacio en el disco:
cat /dev/urandom >> /tmp/temp.log
Rotación de registros en ejecución:
logrotate truncate.cfg