una teclado solo separar rotar programa por para pagina love lotes guardar gratis girar con como cambios perl rotation log4perl

perl - teclado - rotar solo una pagina en pdf



¿Cómo puedo rotar y comprimir los archivos de registro de Log4perl? (3)

¿Ha pensado en trabajar con los mantenedores de Log :: Dispatch :: FileRotate para agregar las características que falta y necesita? Es de código abierto, después de todo. :)

Si no desea ocuparse de eso usted mismo, hay varias consultorías de soporte de CPAN que lo hacen por usted.

Por lo que puedo decir, ni Log4Perl ni ninguno de sus módulos relacionados en CPAN admite rotación y compresión de archivos de registro.

La rotación se puede lograr mediante el uso de:

  1. Log :: Log4perl :: Appender :: Archivo
  2. Log :: Dispatch :: FileRotate .

Pero ninguno de los módulos admite rotación y compresión. (Log :: Dispatch :: FileRotate lo tiene en su lista de tareas pendientes, pero actualmente no está implementado).

Es posible hacer esto usando la instalación estándar de Logrotate en Linux, utilizando Log :: Log4perl :: Appender :: File recreate_check_interval o recreate_check_signal.

A partir de las pruebas iniciales, parece que usar Logrotate con la opción delaycompress hará el truco, incluso en una máquina con alta carga, ya que una vez que se mueve el archivo, log4perl continuará registrando en el mismo Filehandle, hasta que se capte la señal.

Sin embargo, si no se usa delaycompress, y hay (incluso un ligero retraso) entre la compresión del archivo de registro y la captura de la señal por el programa Perl, algunos datos de registro podrían perderse.

¿Qué piensas? ¿Hay otras opciones en las que no pensamos?


Me puse en contacto con el autor de Log :: Dispatch :: FileRotate, como se sugiere aquí, y me explicó el motivo por el que la compresión aún no se implementa en Log :: Dispatch :: FileRotate.

Básicamente, la compresión justo después de la rotación puede bloquear el proceso de ejecución, durante la compresión, que es bastante costosa.

Las opciones sugeridas fueron permitir al usuario de Log :: Dispatch :: FileRotate ejecutar una aplicación arbitraria en el archivo, justo después de la rotación, y así hacerlo en otro proceso que no sea de bloqueo.

Otra sugerencia fue tener un disparador del sistema de archivos (como inotify ) desencadenar la compresión cuando el proceso principal cierra el archivo para que se escriba.

Otra sugerencia más, es escribir el archivo de registro comprimido a través de una tubería gzip, o uno de los módulos perl gzip. Esto funciona, pero causa algunos problemas (grep / less) no funcionará. zgrep y zless funcionarán, pero zgrep da una fea advertencia cuando grepping en un archivo gzip que aún está abierto para escritura. Usar "cola" en el archivo tampoco funcionará, por lo que esta opción no es práctica.


A lo largo de los años, he descubierto que casi siempre desea utilizar métodos externos para la rotación de archivos de registro con Log4perl. Simplemente evitas muchos problemas sutiles (retrasos en el registro, problemas de permisos) que el registro interno gira inevitablemente.

Has mencionado dos métodos que funcionan con logrotate en Linux, ¿por qué no te apegas a ellos? Las preguntas frecuentes de Log4perl describen el uso de newsyslog, que es el equivalente de FreeBSD de logrotate y ofrece características similares.