O mecanismo interno de rotação de logs do postgres pode excluir arquivos de log anteriores a um determinado período de tempo?

9

Estou usando o mecanismo interno de rotação de logs do posgtres. Gostaria que arquivos de log com mais de 30 dias fossem excluídos. Como faço para o postgres fazer isso? Se o postgres não o suportar, posso configurar o logrotate para excluir apenas logs com mais de 30 dias?

Minha configuração atual é:

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
fonte

Respostas:

5

Não acredito que o mecanismo de log do Postgres suporte essas limpezas, mas você está perfeitamente seguro excluindo logs antigos usando logrotate ou um trabalho cron, desde que não mexa no arquivo de log ativo para o qual o Postgres está gravando.

Para o log do Postgres, geralmente prefiro fazer logon no syslog e deixar que os procedimentos normais de rotação de log façam o que precisam. Isso tem algumas vantagens, mas as duas grandes são a capacidade de usar seus procedimentos padrão de rotação de logs (como logrotate) da mesma maneira que você faz para outros daemons e a capacidade de fazer com que o seu daemon syslog envie os logs para um host remoto, se isso é algo que você quer fazer um dia.

Outras opções são discutidas (embora brevemente) na seção 23.3 do manual do Postgres .

voretaq7
fonte
1

Se você não estiver usando o syslog, basta executar o seguinte script a partir do cron e chamá-lo por dia.

#!/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 {} \;

Ao não fazer logon no syslog, você também pode usar ferramentas como pgAdmin ou pgFouine para visualizar / analisar os logs do banco de dados.

gsiems
fonte
pgFouine é o que me levou por esse caminho. Você pode usar o pgFouine a partir de um log do syslog, mas é mais trabalhoso configurá-lo corretamente.
Freiheit