Postgre日志相关(从开放日志到配置日志)

原文:https://blog.csdn.net/w12515114096/article/details/72730245

Postgre日志相关(从开放日志到配置日志)
配置postgre日志的功能
找到postgresql.conf(在安装文件里面的data文件夹里面)。
在when to log的标题下,找到 

1、logging_collector, 设置为 on。然后切勿忘记去除注释(就是开头的#)。 
2、 log_statement 设置为all. 然后去除注释并且重启。 
3、与postgresql.conf同级有个文件夹pg_log日志文件在这个文件夹里面 
4、修改log_truncate_on_rotation选项为on,即可重用同名日志文件,在其末尾添加新的日志信息。

postgresql.conf日志部分的注解

1、logging_collector = on/off —- 是否将日志重定向至文件中,默认是off(该配置修改后,需要重启DB服务)这个上面详细说过了 
2、log_directory = ‘pg_log’ —- 日志文件目录,默认是PGDATA的相对路径,即PGDATA的相对路径,即{PGDATA}/pg_log,也可以改为绝对路径 
默认为${PGDATA}/pg_log,即集群目录下,但是日志文件可能会非常多,建议将日志重定向到其他目录或分区。 
将此配置修改为/var/log/pg_log下,必须先创建此目录,并修改权限,如 
[root@localhost ~]# mkdir -p /var/log/pg_log 
[root@localhost ~]# chown postgres:postgres /var/log/pg_log/ 
[root@localhost ~]# chmod 700 /var/log/pg_log/ 
重启DB服务后,日志将重定向至/var/log/pg_log下 
[root@localhost ~]# su -l postgres -c ‘/opt/pg9.6/bin/pg_ctl -D /mnt/pgdata start’ 
server starting 
LOG: redirecting log output to logging collector process 
HINT: Future log output will appear in directory “/var/log/pg_log”. 
[root@localhost ~]# ls /var/log/pg_log/ 
postgresql-2016-06-18_130611.log 
3、log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’ —- 日志文件命名形式,使用默认即可 
4. log_rotation_age = 1d —- 单个日志文件的生存期,默认1天,在日志文件大小没有达到log_rotation_size时,一天只生成一个日志文件 
5. log_rotation_size = 10MB —- 单个日志文件的大小,如果时间没有超过log_rotation_age,一个日志文件最大只能到10M,否则将新生成一个日志文件。 
6.log_truncate_on_rotation = off —- 当日志文件已存在时,该配置如果为off,新生成的日志将在文件尾部追加,如果为on,则会覆盖原来的日志。 
7.log_lock_waits = off —- 控制当一个会话等待时间超过deadlock_timeout而被锁时是否产生一个日志信息。在判断一个锁等待是否会影响性能时是有用的,缺省是off。 
8.log_statement = ‘none’ # none, ddl, mod, all —- 控制记录哪些SQL语句。none不记录,ddl记录所有数据定义命令,比如CREATE,ALTER,和DROP 语句。mod记录所有ddl语句,加上数据修改语句INSERT,UPDATE等,all记录>所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句。 
9.log_duration = off —- 记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。 
10.log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements and their durations, > 0 logs only statements running at least this number of milliseconds 
-1表示不可用,0将记录所有SQL语句和它们的耗时,>0只记录那些耗时超过(或等于)这个值(ms)的SQL语句。个人更喜欢使用该配置来跟踪那些耗时较长,可能存在性能问题的SQL语句。虽然使用log_statement和log_duration也能够统计SQL语句及耗时,但是SQL语句和耗时统计结果可能相差很多行,或在不同的文件中,但是log_min_duration_statement会将SQL语句和耗时在同一行记录,更方便阅读。 
11.log_connections = off —-是否记录连接日志 
12.log_disconnections = off —- 是否记录连接断开日志 
13.log_line_prefix = ‘%m %p %u %d %r ’ —- 日志输出格式(%m,%p实际意义配置文件中有解释),可根据自己需要设置(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)> 
14.log_timezone = ‘Asia/Shanghai’ —- 日志时区,最好和服务器设置同一个时区,方便问题定位服务器时区设置 
[root@localhost ~]# cp -rf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

                # special values:
                #   %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
                #   %e = SQL state
                #   %c = session ID
                #   %l = session line number
                #   %s = session start timestamp
                #   %v = virtual transaction ID
                #   %x = transaction ID (0 if none)
                #   %q = stop here in non-session
                #        processes
                #   %% = '%'
                # e.g. '<%u%%%d> '

猜你喜欢

转载自blog.csdn.net/duanchitan5407/article/details/80015903