资讯专栏INFORMATION COLUMN

PostgreSQL日志轮滚配置教程

白马啸西风 / 227人阅读

一、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


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128162.html

相关文章

  • PostgreSQL对接SequoiaDB

    PostgreSQL是一款开源的SQL数据库,支持标准SQL,用户可以通过JDBC驱动连接PostgreSQL进行应用程序开发。用户通过扩展PostgreSQL功能,让开发者可以使用SQL语句访问SequoiaDB数据库,完成SequoiaDB数据库的增、删、查、改操作。本文就针...

    TZLLOG 评论0 收藏0
  • JIRA连接PostgreSQL数据库的详细步骤

    本文主要介绍如何连接JIRA到PostgreSQL数据库。 首先 检查是否支持你的PostgreSQL版本。请参见支持的平台。 如果是转移JIRA到另一台服务器,先导出数据为XML备份,然后将旧数据库中的数据传输到新的数据库。 在开始前关闭JIRA...

    ziwenxie 评论0 收藏0
  • JIRA连接PostgreSQL数据库的详细步骤

    本文主要介绍如何连接JIRA到PostgreSQL数据库。 首先 检查是否支持你的PostgreSQL版本。请参见支持的平台。 如果是转移JIRA到另一台服务器,先导出数据为XML备份,然后将旧数据库中的数据传输到新的数据库。 在开始前关闭JIRA...

    android_c 评论0 收藏0
  • JIRA连接PostgreSQL数据库的详细步骤

    本文主要介绍如何连接JIRA到PostgreSQL数据库。 首先 检查是否支持你的PostgreSQL版本。请参见支持的平台。 如果是转移JIRA到另一台服务器,先导出数据为XML备份,然后将旧数据库中的数据传输到新的数据库。 在开始前关闭JIRA...

    Ryan_Li 评论0 收藏0
  • 主要概念 云数据库 PostgreSQL UDB

    ...置文件管理员实例名称资源IDIP和端口备份日志实例类型PostgreSQL实例目前支持普通版和高可用版实例。版本PostgreSQL实例目前支持PostgreSQL 9.4、PostgreSQL 9.6和PostgreSQL 10.4,用户可以根据需求选择相应的云数据库版本。数据库机型Postg...

    ernest.wang 评论0 收藏334

发表评论

0条评论

白马啸西风

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<