在哪里做日志
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表示不记录
严重性 | 用法 | syslog | eventlog |
---|---|---|---|
DEBUG1..DEBUG5 | 为开发者提供连续的更详细的信息。 | DEBUG | INFORMATION |
INFO | 提供用户隐式要求的信息,例如来自VACUUM VERBOSE 的输出。 | INFO | INFORMATION |
NOTICE | 提供可能对用户有用的信息,例如长标识符截断提示。 | NOTICE | INFORMATION |
WARNING | 提供可能出现的问题的警告,例如在一个事务块外COMMIT 。 | NOTICE | WARNING |
ERROR | 报告一个导致当前命令中断的错误。 | WARNING | ERROR |
LOG | 报告管理员可能感兴趣的信息,例如检查点活动。 | INFO | INFORMATION |
FATAL | 报告一个导致当前会话中断的错误。 | ERR | ERROR |
PANIC | 报告一个导致所有数据库会话中断的错误。 | CRIT | ERROR |
记录什么到日志
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(所有语句)