2009-11-19 2 views
5

Ich schaute auf die Beispiele von logrotate.conf und alles in meinem Verzeichnis /etc/logrotate.d. Nirgends konnte ich Dokumentation zu Variablen in diesen Dateien finden.Werden Variablen in Logrotate-Konfigurationsdateien unterstützt?

Ich versuche, eine Konfigurationsdatei zum Drehen der Protokolle einer Anwendung, die wir schreiben, zu erstellen. Ich möchte das Verzeichnis, Protokolle einmal gespeichert sind, und dann verwenden Sie es als eine Variable, etwa so:

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 
    # ... 
} 

Ist das möglich?

Antwort

1

Direkt in der Konfigurationsdatei no (soweit mein Wissen in logrotate geht).

Andere Lösung:

  • Verwenden Sie die Option include Teile der Konfigurationsdatei aus einem Verzeichnis aufzunehmen. Dies kann Ihnen helfen, wenn Sie ein Paket für Ihre Anwendung haben, das Paket kann eine Datei in diesem Verzeichnis hinterlassen, die nur die Einträge für Ihre App enthält.
6

können Sie erreichen, was Sie für von der Umsetzung dieser Flickschusterei suchen: " doppelte Anführungszeichen sind obligatorisch, beachten Sie auch, dass Dateinamen müssen auf die nicht angezeigt werden:

my-logrotate.conf (HINWEIS gleiche Linie)

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

Danach wird der aktuelle logrotate Skript - my-logrotate.sh

#!/bin/sh 

set -eu 

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

Jetzt Sie können logrotate.sh zu Ihrer Crontab hinzufügen.

1

Sie können eine Bash "here document" verwenden, um eine geeignete Konfigurationsdatei während der Installation oder vor dem Ausführen von logrotate zu erstellen.

Eine Bash-Skript könnte wie folgt aussehen:

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

logrotate rt.conf