postgresql日志的配置
一 常用日志参数设置
1 在哪里做日志
- logging_collector = on/off
这个参数启用日志收集器,是否将日志重定向至文件中。默认是off。设置需要重启库
- log_directory
当logging_collector被启用时,这个参数决定日志文件将被在哪个目录下创建。默认是log。设置无需重启库
- log_filename
当logging_collector被启用时,这个参数设置被创建的日志文件的文件名。默认是postgresql-%Y-%m-%d_%H%M%S.log。设置无需重启库
- log_destination
PostgreSQL支持多种方法来记录服务器消息,包括stderr、csvlog和syslog。默认是stderr。常用是csvlog。设置无需重启库
- log_rotation_age
当logging_collector被启用时,这个参数决定一个个体日志文件的最长生命期。当这些分钟过去后,一个新的日志文件将被创建。将这个参数设置为零将禁用基于时间的新日志文件创建。默认单位是分钟。设置无需重启库
- log_rotation_size
当logging_collector被启用时,这个参数决定一个个体日志文件的最大尺寸。当这么多千字节被发送到一个日志文件后,将创建一个新的日志文件。将这个参数设置为零将禁用基于尺寸的新日志文件创建。设置无需重启库
log_rotation_age = 1d
单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件。
log_rotation_size = 10MB
单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。
这两个参数,先满足任何一个条件了,就会新生成一个新日志文件
- log_truncate_on_rotation
当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。默认是off。设置无需重启库。
设置轮转覆盖时需要启动该参数。
覆盖只在一个新文件由于基于时间的轮转被打开时发生,在服务器启动或基于尺寸的轮转时不会发生。
举例:
需求1:要保留 7 天的日志,每天的一个日志文件被命令为server_log.Mon、server_log.Tue等等,并且自动用本周的日志覆盖上一周的日志。
log_filename='server_log.%a'
log_truncate_on_rotation='on'
log_rotation_age=1440
log_rotation_size = 0
需求2:要保留 24 小时的日志,每个小时一个日志文件,但是在日志文件尺寸超过 1GB 时轮转。
log_filename='server_log.%H%M'
log_truncate_on_rotation='on'
log_rotation_age=60
log_rotation_size=1000000
在log_filename中包括%M允许发生任何尺寸驱动的轮转来选择一个不同于每个小时的初始文件名的新文件名。
所以是满1GB但不满一个小时时,会出现不同于规定的日志文件的名称
2 什么时候记录日志
- log_min_messages
控制哪些消息级别 被写入到服务器日志。有效值是DEBUG5、DEBUG4、 DEBUG3、DEBUG2、DEBUG1、 INFO、NOTICE、WARNING、 ERROR、LOG、FATAL和 PANIC。每个级别都包括以后的所有级别。级别越靠后,被发送的消息越少。默认值是WARNING。库设置的是Info。设置无需重启库。
- log_min_error_statement
控制哪些导致一个错误情况的 SQL 语句被记录在服务器日志中。任何指定 严重级别 或更高级别的消息的当前 SQL 语句将被包括在日志项中。有效值是DEBUG5
、 DEBUG4
、DEBUG3
、 DEBUG2
、DEBUG1
、 <