Comment spécifier des exceptions à partir des paramètres WildCard dans le fichier de configuration logrotate?

Pour mes fichiers journaux, le problème est que tous les fichiers sauf un (ou plusieurs), Utilisez la même configuration et le reste en avez un autre. J'ai essayé de comprendre cela en définissant la configuration globale de tous les fichiers, puis écrasez cette configuration pour plusieurs fichiers spécifiques, par exemple:

/var/log/mylogs/*.log {
size 1000k
copytruncate
create 0644 root root
rotate 99
compress
missingok
}

/var/log/mylogs/thatonespecial.log {
size 1000k
copytruncate
create 0644 myuser mygroup
rotate 99
compress
missingok
}

Cependant, cela provoque une erreur:

error: /var/log/mylogs/logrotate.conf:10 duplicate log entry for /var/log/mylogs/thatonespecial.log

Comment puis-je aller à une telle situation? Bien sûr, je ne veux pas énumérer un grand nombre de fichiers journaux standard séparément, de sorte que l'utilisation de la configuration avec des panneaux génériques semble raisonnable pour moi. Mais comment puis-je spécifier une exception entre les fichiers avec des panneaux génériques?
Invité:

Catherine

Confirmation de:

La réponse la plus élégante - Mettre

thatonespecial.log

Dans un répertoire séparé, de sorte qu'il ne correspond pas à la carte générique.

Si cela ne fonctionne pas, vous pouvez utiliser
http://man7.org/linux/man-pages/man7/glob.7.html
Pour étranger la faute. Il est aléatoirement, mais si vous ne pouvez absolument pas déplacer le fichier, c'est probablement votre seule option réelle. Quelque chose comme ca:

/var/log/mylogs/[!t][!h]*.log

Se conforme à tous les fichiers .log, dans le nom de qui n'est pas moins 2 caractères ne commençant pas par "th".

Agathe

Confirmation de:

Il semble que la réécriture des règles mises en œuvre et fonctionne maintenant:

$ logrotate --version
logrotate 3.8.7

$ cat /etc/logrotate.d/test
# rotate application logs for 40 days by default
/home/myapp/log/*.log
/home/myapp/log/*/*.log
{
daily
compress
delaycompress
rotate 40
}

# rotate access logs for 1 year
/home/myapp/log/access/*.log {
daily
compress
delaycompress
rotate 365
}

$ logrotate -d /etc/logrotate.d/test
reading config file /etc/logrotate.d/test

Handling 2 logs

rotating pattern: /home/myapp/log/*.log
/home/myapp/log/*/*.log
after 1 days (40 rotations)
empty log files are not rotated, old logs are removed
No logs found. Rotation not needed.

rotating pattern: /home/myapp/log/access/*.log after 1 days (365 rotations)
empty log files are not rotated, old logs are removed
No logs found. Rotation not needed.

En testant sur mon local logrotate (version 3.7.8) Une erreur s'est produite:

$ cat logr.conf 
# rotate application logs for 40 days by default
/home/myapp/log/*.log
/home/myapp/log/*/*.log
{
daily
compress
delaycompress
rotate 40
}

# rotate access logs for 1 year
/home/myapp/log/access/*.log {
daily
compress
delaycompress
rotate 365
}

$ logrotate -d logr.conf
reading config file logr.conf
reading config info for /home/myapp/log/*.log
/home/myapp/log/*/*.log

error: logr.conf:12 duplicate log entry for /home/myapp/log/access/api_access.log
error: found error in /home/myapp/log/access/*.log , skipping
removing last 1 log configs

...

Agathe

Confirmation de:

Si vous connaissez les noms de tous les journaux, vous pouvez également les spécifier ensemble dans une règle:

/var/log/mylogs/{file1,file2,file3,file4,file5}.log {
size 1000k
copytruncate
create 0644 root root
rotate 99
compress
missingok
}

/var/log/mylogs/thatonespecial.log {
size 1000k
copytruncate
create 0644 myuser mygroup
rotate 99
compress
missingok
}

Pour répondre aux questions, connectez-vous ou registre