Bootstrap

postgres相关参数学习4(报告和日志)

在哪里做日志

logging_collector:参数启用日志收集器,参数值:on/off

log_destination (string):用什么方法来记录服务器消息,参数值:stderr、csvlog和syslog,默认值是只记录到stderr

log_directory (string):日志文件将被在哪个目录下创建,默认是放到pg_log下

log_filename (string):设置被创建的日志文件的文件名。该值被视为一种strftime模式,默认为:postgresql-%Y-%m-%d_%H%M%S.log。

log_file_mode(integer):参数设置日志文件的权限,它可以被chmod和umask系统调用接受(要使用通常的十进制格式,该数字必须以一个0(零)开始),默认值为:默认的权限是0600,表示只有服务器拥有者才能读取或写入日志文件。其他常用的设置是0640,它允许拥有者的组成员读取文件

log_rotation_age(integer):这个参数决定多长时间创建一个日志文件,如果指定值时没有单位,则以分钟为单位。

log_rotation_size (integer):这个参数决定一个日志文件的最大尺寸

log_truncate_on_rotation (boolean):参数将导致PostgreSQL截断(覆盖而不是追加)任何已有的同名日志文件.

举例(1):如果一个日志要保留24小时,每个小时一个日志文件,单个文件1G,24小时以后轮转覆盖:
 log_filename=server_log.%H%M
 log_truncate_on_rotation=on 
 log_rotation_age=60
 log_rotation_size=1GB
这样,如果超过24小时,系统自动根据%H%M,对于文件相同的自动覆盖

(2)要保留 7 天的日志,每天的一个日志文件被命令为server_log.Mon、server_log.Tue等等,
并且自动用本周的日志覆盖上一周的日志。可以这样做:将log_filename设置为server_log.%a、将log_truncate_on_rotation设置为on并且将log_rotation_age设置为1440。
 

什么时候记录日志

log_min_messages (enum):控制哪些消息级别 被写入到服务器日志。
有效值是DEBUG5、DEBUG4、 DEBUG3、DEBUG2、DEBUG1、 INFO、NOTICE、WARNING、
 ERROR、LOG、FATAL和 PANIC,默认值为WARNING

log_min_error_statement (enum)
控制哪些导致一个错误情况的 SQL 语句被记录在服务器日志中,有效值是DEBUG5、
DEBUG4、 DEBUG3、DEBUG2、DEBUG1、 INFO、NOTICE、WARNING、
 ERROR、LOG、FATAL和 PANIC,默认值为ERROR


log_min_duration_statement (integer):超过指定时间运行的SQL将被记录。-1表示不记录 
严重性用法syslogeventlog
DEBUG1..DEBUG5为开发者提供连续的更详细的信息。DEBUGINFORMATION
INFO提供用户隐式要求的信息,例如来自VACUUM VERBOSE的输出。INFOINFORMATION
NOTICE提供可能对用户有用的信息,例如长标识符截断提示。NOTICEINFORMATION
WARNING提供可能出现的问题的警告,例如在一个事务块外COMMITNOTICEWARNING
ERROR报告一个导致当前命令中断的错误。WARNINGERROR
LOG报告管理员可能感兴趣的信息,例如检查点活动。INFOINFORMATION
FATAL报告一个导致当前会话中断的错误。ERRERROR
PANIC报告一个导致所有数据库会话中断的错误。CRITERROR

 

记录什么到日志

log_checkpoints (boolean):导致检查点和重启点被记录在服务器日志中,默认关闭

log_connections (boolean):导致每一次尝试对服务器的连接被记录,客户端认
证的成功完成也会被记录,默认关闭

log_disconnections (boolean),默认关闭

log_duration (boolean):导致每一个完成的语句的持续时间被记录。默认值是off

log_hostname (boolean)
默认情况下,连接日志消息只显示连接主机的 IP 地址。打开这个参数将导致也记录主机名。
注意根据你的主机名解析设置,这可能会导致很微小的性能损失

log_lock_waits (boolean)
控制当一个会话为获得一个锁等到超过deadlock_timeout时,是否要产生一个日志消息。
这有助于决定是否所等待造成了性能低下。默认值是off

log_statement (enum)
控制哪些 SQL 语句被记录。有效值是 none (off)、ddl、mod和 all(所有语句)

 

;