postgres 内部日志轮换机制可以删除超过一定时间的日志文件吗?

Fre*_*eit 10 postgresql log-files logging logrotate

我正在使用 posgtres 的内部日志轮换机制。我希望删除超过 30 天的日志文件。我如何让 postgres 做到这一点?如果 postgres 不支持它,我可以将 logrotate 设置为只删除 30 天以上的日志吗?

我目前的配置是:

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    
Run Code Online (Sandbox Code Playgroud)

vor*_*aq7 5

我不相信 Postgres 日志记录机制支持这种清理,但是只要您不弄乱 Postgres 正在写入的活动日志文件,您就可以完全安全地使用 logrotate 或 cron 作业删除旧日志。

对于 Postgres 日志记录,我通常更喜欢将日志记录到 syslog 并让正常的日志轮换程序完成它们的工作。这有一些优点,但两大优点是能够像使用其他守护程序一样使用标准日志轮换程序(如 logrotate),以及让 syslog 守护程序将日志发送到远程主机的能力,如果这是你有一天想做的事情。

其他选项在 Postgres 手册的第 23.3 节中讨论(尽管简短)。