1.常用日志参数
logging_collector = on/off
是否将日志重定向至文件中,默认是off(该配置修改后,需要重启DB服务),启动之后查看进程ps -ef|grep postgres,会多一个logger进程。
log_directory = 'pg_log'
日志文件目录,默认是PGDATA的相对路径,即PGDATA的相对路径,即{PGDATA}/pg_log,也可以改为绝对路径,可以定义在其他目录或者分区,但是必须先创建此目录,并修改权限。
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
日志文件命名形式,使用默认即可
log_rotation_age = 1d
单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件
log_rotation_size = 10MB
单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。
log_truncate_on_rotation = off
当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。
log_ lock_waits = off
控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的,缺省是off。
log_statement = 'none'
# none, ddl, mod, all ---- 控制记录哪些SQL语句。none不记录,ddl记录所有数据定义命令,比如CREATE,ALTER,和DROP 语句。mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等,all记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句。
log_duration = off
记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。
log_min_duration_statement = -1
# -1示不可用,0将记录所有SQL语句和它们的耗时,>0只记录那些耗时超过(或等于)这个值(ms)的SQL语句。个人更喜欢使用该配置来跟踪那些耗时较长,可能存在性能问题的SQL语句。虽然使用 log_statement和log_duration也能够统计SQL语句及耗时,但是SQL语句和耗时统计结果可能相差很多行,或在不同的文件中,但是log_min_duration_statement会将SQL语句和耗时在同一行记录,更方便阅读。
log_connections = off
是否记录连接日志
log_disconnections = off
是否记录连接断开日志
log_line_prefix = '%m %p %u %d %r '
日志输出格式(%m,%p实际意义配置文件中有解释),可根据自己需要设置(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)
log_timezone = 'Asia/Shanghai'
日志时区,最好和服务器设置同一个时区,方便问题定位
log_filename
设置日志文件名,需结合log_truncate_on_rotation = on使用.可根据自己的需要调整, 例如:
#最多保存12小时的日志,每小时一个文件
log_filename = 'postgresql-%I.log'
#最多保存24小时的日志,每小时一个文件
log_filename = 'postgresql-%H.log'
#最多保存一周的日志,每天一个文件
log_filename = 'postgresql-%w.log'
#最多保存一个月的日志,每天一个文件
log_filename = 'postgresql-%d.log'
#最多保存一年的日志,每天一个文件
log_filename = 'postgresql-%j.log'
2.常用配置
logging_collector = 'on'
log_destination = 'csvlog'
log_directory = 'pg_log'
log_min_duration_statement = '800'
log_filename = 'postgresql-%d_%H%M%S.log'
log_rotation_size = '1024MB'
log_truncate_on_rotation = 'on'
alter system修改日志参数
alter system set logging_collector = 'on';
alter system set log_destination = 'csvlog';
alter system set log_directory = 'pg_log';
alter system set log_min_duration_statement = '800';
alter system set log_filename = 'viid_log_%a.log';
alter system set log_rotation_size = '1024MB';
alter system set log_truncate_on_rotation = 'on';
#必须加上引号
log_filename = 'viid_log_%a.log'