Le mécanisme de rotation interne des journaux de PostgreSQL peut-il supprimer les fichiers journaux antérieurs à un certain temps?

9

J'utilise le mécanisme de rotation interne des journaux de posgtres. Je souhaite que les fichiers journaux de plus de 30 jours soient supprimés. Comment obtenir des postgres pour ce faire? Si postgres ne le prend pas en charge, puis-je configurer logrotate pour supprimer uniquement les journaux de plus de 30 jours?

Ma configuration actuelle est:

log_destination = 'stderr'             
logging_collector = on
log_directory = 'pg_log'                
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' 
#log_truncate_on_rotation = off 
log_rotation_age = 1440         
log_rotation_size = 0    
Freiheit
la source

Réponses:

5

Je ne crois pas que le mécanisme de journalisation de Postgres supporte ces nettoyages, mais vous êtes parfaitement sûr de supprimer les anciens journaux à l'aide de logrotate ou d'un travail cron tant que vous ne jouez pas avec le fichier journal actif sur lequel Postgres écrit.

Pour la journalisation Postgres, je préfère généralement me connecter à syslog et laisser les procédures normales de rotation des journaux faire leur travail. Cela présente quelques avantages, mais les deux principaux sont la possibilité d'utiliser vos procédures de rotation de journal standard (comme logrotate) de la même manière que pour les autres démons et la possibilité de demander à votre démon syslog d'envoyer les journaux à un hôte distant, si c'est quelque chose que vous voulez faire un jour.

D'autres options sont discutées (quoique brièvement) dans la section 23.3 du manuel Postgres .

voretaq7
la source
1

Si vous n'utilisez pas syslog, vous pouvez simplement exécuter le script suivant à partir de cron et l'appeler un jour.

#!/bin/sh

HOME=/var/lib/pgsql
export HOME
PGDATA=/var/lib/pgsql/9.1/data
export PGDATA

/usr/bin/find $PGDATA/pg_log -type f -ctime +30 -name "*.log" -exec /bin/rm {} \;

En ne vous connectant pas à syslog, vous pouvez également utiliser des outils tels que pgAdmin ou pgFouine pour afficher / analyser les journaux de la base de données.

gsiems
la source
pgFouine est ce qui m'a conduit sur cette voie. Vous pouvez utiliser pgFouine à partir d'un journal syslog mais son travail est plus important pour le configurer correctement.
Freiheit