PostgreSQL 日志轮换大小达到文件限制

Posted

技术标签:

【中文标题】PostgreSQL 日志轮换大小达到文件限制【英文标题】:PostgreSQL Log Rotation Size Reached File Limit 【发布时间】:2021-12-17 11:29:49 【问题描述】:

我在 postgreSQL 13 中配置了以下设置。

logging_collector = on  
log_rotation_size='100MB'
log_truncate_on_rotation = on    
log_filename ='postgresql-%Y-%m-%d.log'

我的问题是当日志文件大小达到 100MB 时,它会继续附加在上面,我认为是因为 log_filename。无论如何,当文件名达到 log_rotation_size 时,我可以重命名文件名吗? 我需要用这种格式(不带时间)设置 log_filename,这样每当我重新启动服务时,日志仍然会在同一个日志文件中。

我是否必须在后台运行一些脚本或服务,以便程序能够监控数据/日志文件夹并在日志文件大小达到限制时重命名文件?

【问题讨论】:

【参考方案1】:

正如the documentation 所说:

但是,由于基于时间的轮换,只有在打开新文件时才会发生截断,而不是在服务器启动或基于大小的轮换期间。

在您的情况下截断日志文件意味着丢失最近的日志信息,因此 PostgreSQL 不会这样做。

我想不出比cron 作业更好的方法了,它会在接近限制时删除日志文件。然后基于大小的日志轮换将再次创建文件。

【讨论】:

我可以和你确认一下,我如何在 Windows 中做到这一点? 我认为 Windows 有“at”工作,但我肯定不是 Windows 专家。

以上是关于PostgreSQL 日志轮换大小达到文件限制的主要内容,如果未能解决你的问题,请参考以下文章

什么是 Ansible 日志轮换周期?

Winston - 使用 maxsize 时记录轮换顺序

Apache Artemis 日志记录以轮换日志文件

SQL Server 数据库一次性能删除的最大上限是多少?

Ruby on Rails 中的多个日志文件和日志轮换

在 Windows 上轮换 apache 日志文件的最佳方法