Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

970
Views
logrotate: eliminar registros de tomcat/jboss anteriores a n días

No he encontrado una solución para purgar registros antiguos de tomcat o jboss o cualquier otro registro con marca de tiempo: catalog.log. /servidor.log. . Básicamente, jboss rota estos registros como: server.log, server.log.20131201, server.log.20131203 y así sucesivamente.

¿Hay alguna manera de que pueda usar logrotate para eliminar registros de más de n días? No quiero usar find inside postrotate o modificar las propiedades de registro de jboss/tomcat. Solo quiero saber si logrotate realmente puede lograr esto por sí solo. Sé que no es muy productivo, pero tengo un problema en el que necesito una respuesta.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Si no quieres usar find inside postrotate , no, no puedes.

logrotate trata cada instancia de server.log rotada por Tomcat/JBoss como un archivo diferente y, dado que son únicas, logrotate las rotará solo una vez. maxage , la directiva que elimina los registros rotados con más de n días de antigüedad, solo se verifica si el archivo de registro debe rotarse, por lo que maxage solo se ejecuta una vez y no puede realizar un seguimiento de la antigüedad del archivo.

Sin embargo, si cambia de opinión sobre el uso de find , logrotate puede ayudarlo a simplificar la administración de los archivos de registro creados por Tomcat y JBoss. Lo uso para comprimir y eliminar archivos antiguos con un archivo de configuración como este:

 /path/to/logs/server.log.????-??-?? { compress compresscmd /usr/bin/bzip2 nocreate nodateext ifempty missingok rotate 1 size 0 start 0 lastaction # Remove rotated files older than 180 days find /path/to/logs -name 'server.log.????-??-??.0.bz2' -mtime +180 -exec rm {} \; endscript }

donde:

  • rotate 1 y compress renombrar y comprimir, digamos, server.log.20131201 a server.log.20131201.0.bz2 . El 0 entre la marca de tiempo y la extensión .bz2 proviene del start 0 .
  • size 0 se asegura de que los archivos siempre se renombran y comprimen.
  • El bloque lastaction elimina los archivos rotados con más de 180 días.
over 4 years ago · Santiago Trujillo Report

0

logrotate puede administrar sus registros girándolos y eventualmente manteniendo un número limitado de registros rotados. Pero AFAIK solo puede hacerlo para los registros que administra directamente. Si sus registros ya fueron rotados por algún otro agente (es decir, el mismo Tomcat), logrotate no puede hacer nada, simplemente porque no sabe nada sobre la rotación realizada por otra persona.

Entonces, la respuesta es no, no puede usar logrotate para eliminar registros que no administra por sí mismo (y creo que ni siquiera tiene la intención de hacer algo así).

over 4 years ago · Santiago Trujillo Report

0

Puede poner el script en /etc/cron.daily. Por ejemplo:

gato /etc/cron.daily/tomcat-rotate-logs

 #!/bin/sh # erasing tomcat logs older then 7 days for x in $(find /var/log/tomcat/ -type f -mtime +7); do rm "$x"; logger -t TOMCAT-ROTATE-LOGS "Erasing $x [done]"; done

o crea una configuración logrotate. Por ejemplo: gato /etc/logrotate.d/tomcat

 /var/log/tomcat/*.log { su tomcat tomcat copytruncate daily rotate 6 compress missingok }

"su tomcat tomcat": significa evitar el error logrotate en permisos incorrectos

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!