94 votes

syntaxe du fichier de configuration de logrotate - plusieurs entrées joker possibles ?

Comme la page de manuel ne répond pas à ma question et que je ne veux pas forcer un cycle de rotation, j'ai décidé de poser la question ici.

La page de manuel de logrotate donne l'exemple suivant :

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

Tous les exemples comportant des caractères génériques ne contiennent qu'une seule entrée. Maintenant, ce qui m'intéresse, c'est de savoir si celle-ci est également autorisée :

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

Voici le raisonnement : J'ai plusieurs vhosts et je les divise en fonction de l'utilisateur qui "possède" ces vhosts. Comme les fichiers journaux sont lisibles par tous, je veux monter un dossier dans le répertoire personnel de l'utilisateur, mais le limiter aux fichiers journaux que l'utilisateur "possède", ce qui est plus facile à réaliser en séparant les journaux dans des dossiers (et le montage lié nécessite ce schéma de toute façon). Je cherche donc une solution pour faire tourner à la fois les fichiers journaux dans le dossier /var/log/httpd ainsi que tous les fichiers de logs sous les sous-répertoires de ce répertoire - sans de devoir énumérer chaque sous-répertoire par son nom.

En général, la page de manuel ne donne aucune indication sur le fait que les entrées multiples sont possibles pour les règles de caractères génériques ou seulement pour les chemins complets. J'utilise la version 3.7.8-6 de logrotate qui est fournie avec Debian "Squeeze", mais je pense que ce problème n'est pas nécessairement spécifique à une distribution ou à une version de programme.

129voto

Damian Powell Points 315

Oui, vous pouvez utiliser plusieurs jokers. Vous pouvez tester votre fichier sans effectuer les rotations réelles en procédant ainsi :

logrotate -d -f /etc/logrotate.conf
  • -d = Active le mode débogage. En mode débogage, aucune modification ne sera apportée aux journaux ou au fichier d'état de logrotate.

  • -f = Demande à logrotate de forcer la rotation, même s'il ne pense pas que cela soit nécessaire. que c'est nécessaire. C'est parfois utile après avoir ajouté de nouvelles nouvelles entrées à logrotate, ou si de vieux fichiers journaux ont été supprimés manuellement supprimés à la main, car les nouveaux fichiers seront créés, et la journalisation con- tinuera correctement. correctement.``

35voto

ThorSummoner Points 990

Je voulais juste clarifier les choses, parce que c'est ce que je suis venu chercher à faire,

Il est possible de spécifier plusieurs fichiers journaux pour une seule configuration, par exemple

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

10voto

Sven Points 211

Extrait de la page de manuel de logrotate :

Notez que les noms des fichiers de log peuvent être entre guillemets (et que guillemets sont nécessaires si le nom contient des espaces). Les règles de citation normales de Shell s'appliquent, les caractères ', " et \ étant pris en charge.

N'oubliez pas de modifier ou de supprimer les guillemets lorsque vous passez d'un modèle unique à des modèles multiples :

Ça marche :

/var/log/*.log /var/log/*.blog {

cela fonctionne aussi :

/var/log/*.log
/var/log/*.blog {

Cela ne fonctionne pas :

'/var/log/*.log /var/log/*.blog' {

et ni ça :

"/var/log/*.log /var/log/*.blog" {

Comparez avec le cas du modèle unique.

Ça marche :

'/var/log/*.log' {

et cela fonctionne aussi :

"/var/log/*.log" {

Testé avec logrotate 3.10.0

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X