PostgreSQL日志轮滚配置教程
一、PostgreSQL日志滚动介绍
官网介绍:https://postgresqlco.nf/doc/zh/param/log_truncate_on_rotation/
“当logging_collector被启用时,这个参数将导致PostgreSQL截断(覆盖而不是追加)任何已有的同名日志文件。不过,截断只在一个新文件由于基于时间的轮转被打开时发生,在服务器启动或基于尺寸的轮转时不会发生。如果被关闭,在所有情况下以前存在的文件将被追加。”简单理解:PGSQL日志处理机制是通过logging_collector参数来控制日志文件是持续追加,还是定期循环覆盖的。针对循环覆盖的场景,是基于时间的方式,即多长时间开始循环覆盖。
二、PostgreSQL配置参数解读
配置文件名:postgresql.conf
2.1 开启日志记录功能
logging_collector =on
◆ 布尔值
◆ 该参数启用日志收集器,它是一个捕捉被发送到stderr的日志消息的后台进程,并且它会将这些消息重定向到日志文件中
2.2 日志滚动策略
(1)log_directory
log_directory = 'pg_log'
◆ 字符串
◆ 配置日志目录,默认为pg_log即可。可以是绝对路径,也可是相对路径(相对于数据库文件所在的路径)
(2)log_filename
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
◆ 字符串
◆ 日志文件名及其扩展名,%Y、%m、%d、%H、%M和%S,分别表示年、月、日、小时、分和秒
◆ 没有指定时间信息,系统会自动在log_filename值的末尾加上文件创建时间戳作为文件名
(3)log_truncate_on_rotation
log_truncate_on_rotation = on
◆ 布尔值
◆ 系统在创建一个新的数据库运行日志文件时,如果发现存在一个同名的文件,当log_truncate_on_rotation的值是on时,系统覆盖这个同名文件
◆ 当log_truncate_on_rotation的值是off时,系统将重用这个同名文件,在它的末尾添加新的日志信息
◆ 要注意的是,只有在log_rotation_age非零时,系统才创建新的日志文件的情况下,才会覆盖同名的日志文件
◆ 因为数据库重新启动或者因为参数log_rotation_size起作用而创建新的日志文件,不会覆盖同名的日志文件,而是在同名的日志文件末尾添加新的日志信息
(4)log_rotation_age
log_rotation_age = 0
◆ 数字型 单位为分钟
◆ 日志轮询时间,即该参数决定一个个体日志文件的最长生命期。当时间到期后,一个新的日志文件将被创建
◆ 注意:该值为0时不是禁用该功能,而是禁用基于时间的新日志文件创建
(5)log_rotation_size
log_rotation_size = 10240
◆ 数字型 单位是KB
◆ 日志轮询大小,该参数决定一个个体日志文件的最大尺寸。当尺寸达到该值后,将创建一个新的日志文件
◆ 注意:该参数值为0时,表示禁用基于尺寸的新日志文件创建
三、案例演示
3.1 log_filename日志格式说明
默认是postgresql-%Y-%m-%d_%H%M%S.log。支持strftime格式。
格式符说明:
%a 星期的英文单词的缩写:如星期一, 则返回 Mon
%A 星期的英文单词的全拼:如星期一,返回 Monday
%b 月份的英文单词的缩写:如一月, 则返回 Jan
%B 月份的引文单词的缩写:如一月, 则返回 January
%c 返回datetime的字符串表示,如03/08/15 23:01:26
%d 返回的是当前时间是当前月的第几天
%f 微秒的表示: 范围: [0,999999]
%H 以24小时制表示当前小时
%I 以12小时制表示当前小时
%j 返回 当天是当年的第几天 范围[001,366]
%m 返回月份 范围[0,12]
%M 返回分钟数 范围 [0,59]
%P 返回是上午还是下午–AM or PM
%S 返回秒数 范围 [0,61]
3.2 配置案例演示
(1)要求:保留 7 天的日志,每天的一个日志文件被命令为postgresql-.Mon.log、postgresql-.Tue.log等等,并且自动用本周的日志覆盖上一周的日志。
log_filename = postgresql-.%a.log # 日志命名 log_truncate_on_rotation = on # 开启循环覆盖 log_rotation_age = 1440 # 每天一个日志文件 log_rotation_size = 0 # 禁用基于尺寸的新日志文件创建
(2)要求:要保留 24 小时的日志,每个小时一个日志文件,但是在日志文件尺寸超过 1GB 时轮转
log_filename = postgresql-.%H%M.log # 日志命名 log_truncate_on_rotation = on # 开启循环覆盖 log_rotation_age = 60 # 每小时一个日志文件 log_rotation_size = 1000000 # 开启基于尺寸的日志轮转,即新建一个日志文件。这里1G约等于1000M,1000000KB
作者:UStarGao
链接:https://www.starcto.com/PostgreSQL/252.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2022-06-24一文搞懂MySQL日志区别-binlog/redo log/undo log
- 2021-08-05Redis持久化机制之AOF日志与RDB快照
- 2021-08-25Docker镜像逆向工程-镜像分析
- 2021-12-13MySQL通过mysqldump进行逻辑备份触发DB crash
- 2023-05-07如何快速部署ChatGPT应用并绕开限制