1.运行日志配置
运行日志路径默认在目录$PGDATA/log下
(1)日志配置参数文件
logging_collector --是否开启日志收集开关,默认off,开启要重启DB
log_destination --日志记录类型,默认是stderr,只记录错误输出
log_directory --日志路径,默认是$PGDATA/pg_log
log_filename --日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log
log_connections --用户session登陆时是否写入日志,默认off
log_disconnections --用户session退出时是否写入日志,默认off
log_rotation_age --保留单个文件的最大时长,默认是1d,也有1h,1min,1s
log_rotation_size --保留单个文件的最大尺寸,默认是10MB
log_line_prefix = '%m %p %u %d %r '
log_statement = ddl --记录DDL
log_duration=ON --SQL语句的执行时间
log_min_duration_statement --记录超时SQL;
(2)log_line_prefix配置
log_line_prefix = '%m %p %u %d %r '
#日志输出格式
# %a = application name
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = process ID
# %t = timestamp without milliseconds
# %m = timestamp with milliseconds
# %i = command tag
(3)其他参数说明
log_statement 配置
用于记录用户登陆数据库后的各种操作,通过参数pg_statement来控制
默认的pg_statement参数值是none,即不记录
PG日志里分成了3类:
ddl(记录create,drop和alter)、
mod(记录ddl+insert,delete,update和truncate)和
all(mod+select)
设置为 all 不会记录包含简单语法错误的语这是因为只有在完成基本语法解析并确定了语句类型之后才会发出日志消息。
示例:
vi $PGDATA/postgresql.conf
log_statement = ddl
或
alter system set log_statement = ddl;
select pg_reload_conf();
log_duration :每一个SQL语句的执行时间被记录。默认值是off
log_min_duration_statement:
如果SQL语句运行至少指定的时间,将记录每一个超时SQL语句以及执行时间。
当把这个选项和log_statement一起使用时,已经被log_statement记录的语句文本不会在此重复记录。
注意:如果log_duration为on并且log_min_duration_statement为正值,
所有持续时间都将被记录,但是只有超过阈值的语句才会被记录查询文本。
2.总结
开启日志记录功能,能够方便分析数据库的报错信息,慢日志,SQL执行记录等。可以根据需要配置合适的日志级别,方便问题排除。