IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    PostGreSQL数据库日志参数记录

    牧人发表于 2023-10-10 14:45:00
    love 0

    以下是和posgresql数据库日志相关的设置:

    log_min_messages = info
    log_statement = 'mod'
    log_destination = 'csvlog'
    logging_collector = on
    log_directory = '../pglog'
    log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
    log_truncate_on_rotation = on
    log_checkpoints = on
    log_connections = on
    log_disconnections = on
    log_lock_waits = on
    log_error_verbosity = verbose
    log_temp_files = 8192
    log_timezone = 'Asia/Shanghai'
    log_rotation_age = 1d
    log_rotation_size = 1GB
    log_min_duration_statement = 5s
    log_autovacuum_min_duration = 0
    log_line_prefix = '%m [%p] %q %u %d %a %r %e '

    日志参数说明:

    log_destination:有三种输出方法,stderr,csvlog,syslog;在windows上还支持eventlog。默认是stderr,如果使用csvlog的话,logging_collector必须开启。也可以同时使用csvlog和stderr,会记录两种格式的日志。
    logging_collector:日志收集器,它是一个捕捉被发送到stderr的日志消息的后台进程,并且它会将这些消息重定向到日志文件中,默认是OFF。
    log_directory:日志保存路径,当logging_collector被启用时,这个参数决定日志文件将被在哪个目录下创建。
    log_filename:日志名格式,默认是postgresql-%Y-%m-%d_%H%M%S.log。
    log_file_mode:默认的权限是0600,表示只有服务器拥有者才能读取或写入日志文件。其他常用的设置是0640,它允许拥有者的组成员读取文件。不过要注意你需要修改log_directory为将文件存储在集簇数据目录之外的某个位置,才能利用这个设置。在任何情况下,让日志文件变成任何人都可读是不明智的,因为日志文件中可能包含敏感数据。
    log_truncate_on_rotation:当logging_collector被启用时,这个参数将导致 PostgreSQL截断(覆盖而不是追加)任何已有的同名日志文件。不过,截断只在一个新文件由于基于时间的轮转被打开时发生,在基于尺寸的轮转时不会发生。如果被关闭,在所有情况下以前存在的文件将被追加。
    log_rotation_age:当logging_collector被启用时,这个参数决定使用一个单个日志文件的最大时间量,之后将创立一个新的日志文件,默认为24小时。 将这个参数设置为零将禁用基于时间的新日志文件创建。
    log_rotation_size:当logging_collector被启用时,这个参数决定一个个体日志文件的最大尺寸。当这些数据量被发送到一个日志文件后,将创建一个新的日志文件,默认值是10M。设置为零时将禁用基于大小创建新的日志文件。
    log_min_duration_statement:记录慢 sql 的时间阀值,超过这个时间的 sql 将会被记录到日志中,默认值为 -1,不记录慢sql。
    log_checkpoints:控制检查点和重启点是否被记录在服务器日志中,一些统计信息也被包括在日志消息中,包括写入缓冲区的数据和写它们所花的时间,默认值是关闭。
    log_connections:控制连接信息是否被记录,尝试对服务器的连接被记录,客户端认证的成功完成也会被记录,在会话中它不能被更改,默认为off。
    log_disconnections:控制会话终止是否被记录。日志输出提供的信息类似于 log_connections,不过还外加会话的持续时间,在会话中它不能被更改,默认为off。
    log_error_verbosity:有效值是TERSE、DEFAULT和VERBOSE。TERSE排除记录DETAIL、HINT、QUERY和CONTEXT错误信息。VERBOSE输出包括SQLSTATE错误码以及产生错误的源代码文件名、函数名和行号。 默认是 DEFAULT。
    log_line_prefix:设置日志中几率哪些内容,默认值是'%m [%p] ',记录时间戳和进程ID。
    log_statement:控制哪些 SQL 语句被记录。有效值是 none (off)、ddl、mod和 all(所有语句),mod记录所有ddl语句,外加数据修改语句例如INSERT, UPDATE、DELETE、TRUNCATE, 和COPY FROM。 如果PREPARE、EXECUTE和 EXPLAIN ANALYZE包含合适类型的命令,它们也会被记录。默认是 none。
    log_timezone:设置在服务器日志中写入的时间戳的时区,默认值是GMT。

    log_filename 格式符说明

    %a:星期的英文单词的缩写:如星期一, 则返回 Mon
    %A:星期的英文单词的全拼:如星期一,返回 Monday
    %b:月份的英文单词的缩写:如一月, 则返回 Jan
    %B:月份的引文单词的缩写:如一月, 则返回 January
    %c:返回datetime的字符串表示,如03/08/15 23:01:26
    %d:返回的是当前时间是当前月的第几天
    %f:微秒的表示: 范围: [0,999999]
    %H:以24小时制表示当前小时
    %I:以12小时制表示当前小时
    %j:返回 当天是当年的第几天 范围[001,366]
    %m:返回月份 范围[0,12]
    %M:返回分钟数 范围 [0,59]
    %P:返回是上午还是下午–AM or PM
    %S:返回秒数 范围 [0,61]。。。手册说明的
    %U:返回当周是当年的第几周 以周日为第一天
    %W:返回当周是当年的第几周 以周一为第一天
    %w:当天在当周的天数,范围为[0, 6],6表示星期天
    %x:日期的字符串表示 :03/08/15
    %X:时间的字符串表示 :23:22:08
    %y:两个数字表示的年份 15
    %Y:四个数字表示的年份 2015
    %z:与utc时间的间隔 (如果是本地时间,返回空字符串)
    %Z:时区名称(如果是本地时间,返回空字符串)

    log_line_prefix 格式符说明

    %a:应用名
    %u:用户名
    %d:数据库名
    %r:远程主机名或 IP 地址,以及远程端口
    %h:远程主机名或 IP 地址
    %b:后端类型
    %p:进程 ID
    %t:无毫秒的时间戳
    %m:带毫秒的时间戳
    %n:带毫秒的时间戳(作为 Unix 时代)
    %i:命令标签:会话当前命令的类型
    %e:SQLSTATE 错误代码
    %c:会话 ID:见下文
    %l:对每个会话或进程的日志行号,从 1 开始
    %s:进程开始的时间戳
    %v:虚拟事务 ID (backendID/localXID)
    %x:事务 ID (如果未分配则为 0)
    %q:不产生输出,但是告诉非会话进程在字符串的这一点停止;会话进程忽略
    %%:纯文字%
    


沪ICP备19023445号-2号
友情链接