[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Rutina en logrotate para Apache2



El día 15 de enero de 2011 20:31, Camaleón <noelamac@gmail.com> escribió:
> Hola,
>
> Estoy buscando una rutina para la rotación de los registros de Apache2
> (lenny).
>
> La idea es que se genere un archivo cada mes con el siguiente formato:
>
> access.2011-01-yyyymmddhhmmss.log
> access.2011-02-yyyymmddhhmmss.log
> access.2011-03-yyyymmddhhmmss.log
> (...)
> error.2011-01-yyyymmddhhmmss.log
> error.2011-02-yyyymmddhhmmss.log
> error.2011-03-yyyymmddhhmmss.log
>
> Y que esos registros se compriman en un archivo único cada año:
>
> access.2011-yyyymmddhhmmss.log.gz
> access.2012-yyyymmddhhmmss.log.gz
> access.2013-yyyymmddhhmmss.log.gz
>
> ("yyyymmddhhmmss" sería la marca de tiempo de cuando se ejecuta la
> rotación)
>
> Tampoco quiero que borre automáticamente nada, es decir, que los
> registros anuales comprimidos permanezcan almacenados en su sitio con el
> contenido de todos archivos mensuales.
>
> Ahora mismo tengo:
>
> ***
> /etc/logrotate.d/apache2
>
>        /var/log/apache2/*.log {
>        monthly
>        missingok
>        compress
>        delaycompress
>        notifyempty
>        create 640 root adm
>        sharedscripts
>        postrotate
>                [...]
>        endscript
> ***
>
> Pero al ejecutar un simulacro ("/usr/sbin/logrotate -d") veo algo que no
> me gusta ("old logs are removed") por lo que me parece que estoy poniendo
> algo mal. Y por otra parte, no sé cómo decirle que los registros
> mensuales no se compriman sino que se genere un archivo comprimido sólo
> cada año, con todos los meses.
>
> La otra duda que tengo es quién se encarga de poner el nombre+coletilla
> de la fecha a los archivos ¿Apache2 -con la variable CustomLog/ErrorLog-
> o de eso se encarga "logrotate"?
>
> De momento, los archivos de registro que genera Apache2 mantienen el
> nombre de "access.log, error.log", aunque supongo que hasta febrero no se
> creará el archivo nuevo.
>
> ¿Sugerencias? :-)
>
> Saludos,
>
> --
> Camaleón
>
>

A ver si esto te da una idea...

en man logrotate:
 prerotate/endscript
              The  lines  between  prerotate and endscript (both of which must
              appear on lines by themselves) are executed before the log  file
              is  rotated  and only if the log will actually be rotated. These
              directives may only appear inside a log  file  definition.   See
              also postrotate.

Vale pues metemos ahí un script que copie el fichero a otro
directorio, que cuente cuantos hay en ese directorio de destino, y
cuando sean 12 los comprima y mueva el fichero a otro lado.


Saludos.


Reply to: