错误日志
相关参数
log_destination 日志格式,stderr,csvlog,syslog
logging_collector = on 开启日志采集
log_directory = 'log' 日志目录
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'日志文件名字
log_truncate_on_rotation = off 是否覆盖
log_rotation_age = 1d 每天生成
log_rotation_size = 10MB 每个日志大小
只有基于时间的文件切换才会覆盖,服务器重启时的文件切换并不会覆盖。
log日志级别
log级别由参数log_min_messages控制,分别为debug5 debug4 ..debug1、INFO、NOTICE、WARNING、ERROR、LOG、FATAL、PANIC级别越靠后,打印的日志就越少。
慢查询日志
log_min_duration_statement
由参数log_min_duration_statement控制,如果某个sql语句的运行时间大于或等于设定的毫秒数,那么该SQL语句和他运行的时间就会记录到日志中,当设置为0时,所有的运行SQL语句都会被记录。
SQL语句日志
log_min_error_statement
记录某一个sql产生了一定级别的日志,通常是错误日志。由参数log_min_error_statement来控制,分别为debug5 debug4 ..debug1、INFO、NOTICE、WARNING、ERROR、LOG、FATAL、PANIC级别控制。
log_statement
PG还可以控制是否记录DDL、DML或所有的SQL语句,该参数是由log_statement来控制的,
(1)当设置为none时,不记录sql语句;
(2)当设置为ddl时,记录所有的DDL语句;
(3)当设置为mod时,记录DML,truncate,copy from等,PREPARE、EXECUTE或EXPLAIN ANALYZE语句产生了更新,这些语句也同样会被记录下来
(4)当设置为all时,所有SQL语句都会被记录。
注:如果使用了log_min_duration_statement,超过一定时间的SQL语句已在日志中被打印,而这些SQL语句又符合log_statement参数配置并且要求输出到日志中,则SQL语句不会在日志中重复打印两次,只会打印一次。
log_temp_files
当SQL有排序、临时查询结果或Hash时会生成临时文件,这些临时文件有时会比较大,需要进行监控,可以设置参数“log_temp_files”为一个整数值,当生成的临时文件大于这个值时,则把临时文件的信息打印到日志文件中。
执行计划日志
PostgreSQL中还有以下调试SQL执行计划及过程的日志参数。
·debug_print_parse:设置为“on”时,把SQL的解析树打印到日志中。
·debug_print_rewritten:设置为“on”时,把SQL的查询重写打印到日志中。
·debug_print_plan:设置为“on”时,把SQL的执行计划打印到日志中。
·debug_pretty_print:是否缩进上面3种日志以使其更易读。
其他日志
PostgreSQL还有很多日志开关,可以由用户决定把哪些信息记录到日志中。
·log_checkpoints:是否记录checkpoint。
·log_connections:是否记录客户端的连接。
·log_disconnections:是否记录客户端断开连接的信息。
·log_duration:是否记录每个已完成语句的持续时间,对于使用扩展查询协议的客户端,语法分析、绑定、执行,每一步所用的时间都分别进行记录。
·log_hostname:是否记录客户端的主机名。
·log_lock_waits:当一个会话等待时间超过deadlock_timeout时,是否记录一条日志信息。