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
multilogde Dan Bernstein de daemontools multilogde Bruce Guenter de daemontools-encores6-logde Laurent Bercot de s6- El
svlogdde Gerrit Pape de runit - El
tinylogde Wayne Marshall del perpetrador - Mi
cyclogde nosh
Herramientas para luego procesar multilog Los conjuntos de archivos de registro de formato incluyen, entre otros:
multilog-watchde Russ Allberylogrange- El
multilog-stamptailde Paul Kremer - Mi
follow-log-directoriesde nosh - Mi
export-to-rsyslogde nosh
Lecturas adicionales
- Jonathan de Boyne Pollard (2015). "Inicio sesión". La familia daemontools . Respuestas frecuentes.
- Jonathan de Boyne Pollard (2016). No use
logrotateonewsyslogen 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