2009-11-19 11 views
5

Miré ejemplos de logrotate.conf y todo en mi directorio /etc/logrotate.d. En ninguna parte pude encontrar documentación sobre variables en estos archivos.¿Se admiten variables en los archivos de configuración de logrotate?

Estoy tratando de crear un archivo de configuración para rotar los registros de una aplicación que estamos escribiendo. Quiero establecer el directorio donde se almacenan los registros de una vez, y luego usarlo como una variable, así:

my_app_log_dir=/where/it/is/deployed/logs 

${my_app_log_dir}/*.log ${my_app_log_dir}/some_sub_dir/*.log { 
    missingok 
    # and so on 
    # ... 
} 

¿Es posible?

Respuesta

1

Directamente en el archivo de configuración no (en lo que respecta a mi conocimiento en logrotate).

otra solución:

  • Utilice la opción include para incluir partes del archivo de configuración de un directorio. Esto puede ayudarlo si tiene un paquete para su aplicación, el paquete puede dejar un archivo en ese directorio que solo contenga las entradas de su aplicación.
6

Puede lograr lo que busca mediante la implementación de este kludge:

mi-logrotate.conf (NOTA: comillas dobles " son obligatorios, también tenga en cuenta que los nombres de archivos no tienen que aparecer en la misma línea)

"*.log" 
"some_sub_dir/*.log" 
{ 
    missingok 
    # and so on 
    # ... 
} 

A continuación, la secuencia de comandos logrotate real - my-logrotate.sh

#!/bin/sh 

set -eu 

cd "${my_app_log_dir}" 
exec logrotate /path/to/my-logrotate.conf 

Ahora puede agregar logrotate.sh a su crontab.

1

Puede usar un bash "here document" para crear un archivo de configuración adecuado sobre la marcha, ya sea en el momento de la instalación o antes de ejecutar logrotate.

Una escritura del golpe podría tener este aspecto:

cat >rt.conf <<. 
"${my_app_log_dir}/*.log" { 
    rotate 5 
    size 15k 
    missingok 
} 
. 

logrotate rt.conf 
Cuestiones relacionadas