欢迎投稿

今日深度:

postgresql开启pg_log日志详细步骤及参数说明,

postgresql开启pg_log日志详细步骤及参数说明,


目录
  • 一、概述:postgresql的运行日志默认是不开启的,如果要查询日志需要手动开启。
  • 二、修改配置文件,开启运行日志:
  • 三、将运行日志导入到数据库:
    • 1、创建日志表:
    • 2、将日志文件copy到数据库
  • 四、其他:一些参数说明
    • 总结

      一、概述:postgresql的运行日志默认是不开启的,如果要查询日志需要手动开启。

      二、修改配置文件,开启运行日志:

      vim postgresql.conf
      
      log_destination = ‘csvlog'
      logging_collector = on
      log_directory = ‘pg_log'
      log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log'
      log_rotation_age = 1d
      log_rotation_size = 100MB
      log_min_messages = debug1
      # 记录执行慢的SQL
      log_min_duration_statement = 60
      log_checkpoints = on
      log_connections = on
      log_disconnections = on
      log_duration = on
      log_line_prefix = ‘%m'
      # 监控数据库中长时间的锁
      log_lock_waits = on
      # 记录DDL操作
      log_statement = ‘all'
      
      [root@localhost data]# cd pg_log
      [root@localhost pg_log]# ls
      postgresql-2023-07-27_22.csv  postgresql-2023-07-27_22.log  postgresql-2023-07-28_14.csv  postgresql-2023-07-28_14.log
      

      三、将运行日志导入到数据库:

      1、创建日志表:

      CREATE TABLE postgres_log
      (
      log_time timestamp(3) with time zone,user_name text,
      database_name text,
      process_id integer,
      connection_from text,
      session_id text,
      session_line_num bigint,
      command_tag text,
      session_start_time timestamp with time zone,
      virtual_transaction_id text,
      transaction_id bigint,
      error_severity text,
      sql_state_code text,
      message text,
      detail text,
      hint text,internal_query text,
      internal_query_pos integer,
      context text,query text,
      query_pos integer,
      location text,
      application_name text,
      backend_type text,
      leader_pid integer,
      query_id bigint,
      PRIMARY KEY (session_id, session_line_num)
      ) 
      

      2、将日志文件copy到数据库

      DO $func$BEGIN  EXECUTE $$ COPY public.postgres_log from '/opt/postgresql/data/pg_log/postgresql-$$ || to_char(now(),'YYYY-MM-DD_HH24') || $$.csv'  DELIMITER ',' CSV HEADER;  $$;END;$func$ LANGUAGE plpgsql;
      
      SELECT * from postgres_log

      四、其他:一些参数说明

      log_destination默认是stderr,有三个选项stderr,csvlog,syslog;如果使用csvlog的话,logging_collector必须开启。也可以同时使用csvlog和stderr,会记录两种格式的日志。

      log_rotation_age当logging_collector被启用时,这个参数决定一个个体日志文件的最长生命期。当这些分钟过去后,一个新的日志文件将被创建。将这个参数设置为零将禁用基于时间的新日志文件创建。1d代表1天。

      log_rotation_size:当logging_collector被启用时,这个参数决定一个个体日志文件的最大尺寸。当这么多千字节被发送到一个日志文件后,将创建一个新的日志文件。将这个参数设置为零将禁用基于尺寸的新日志文件创建。

      log_min_messages:控制哪些消息级别 被写入到服务器日志。有效值是DEBUG5、DEBUG4、 DEBUG3、DEBUG2、DEBUG1、 INFO、NOTICE、WARNING、 ERROR、LOG、FATAL和 PANIC。每个级别都包括以后的所有级别。级别越靠后,被发送的消息越少。默认值是WARNING。

      log_min_duration_statement:相当于mysql的long_query_time,记录慢SQL,超过这个时间的SQL将会被记录到日志里。

      log_connections:导致每一次尝试对服务器的连接被记录,客户端认证的成功完成也会被记录。 只有超级用户能在会话开始时更改这个参数,在会话中它不能被更改。默认 为off。

      log_disconnections:导致会话终止也会被记录。日志输出提供的信息类似于 log_connections,不过还外加会话的持续时间。 只有超级用户能在会话开始时更改这个参数,在会话中它不能被更改。默认 为off。

      log_duration:导致每一个完成的语句的持续时间被记录。默认值是off。如果log_duration为on并且log_min_duration_statement为正值,所有持续时间都将被记录,但是只有超过阈值的语句才会被记录查询文本。这种行为有助于在高负载安装中收集统计信息

      log_line_prefix:设置日志输出格式(能够记录时间,用户名称,数据库名称,客户端IP和端口,方便定位问题)默认值是’%m [%p] ',它记录时间戳和进程ID

      log_lock_waits:控制当一个会话为获得一个锁等到超过deadlock_timeout时,是否要产生一个日志消息。这有助于决定是否锁等待造成了性能低下。默认值是off

      log_statement:控制哪些 SQL 语句被记录。有效值是 none (off)、ddl、mod和 all(所有语句)。默认值是none

      总结

      到此这篇关于postgresql开启pg_log日志详细步骤及参数说明的文章就介绍到这了,更多相关postgresql开启pg_log日志内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

      您可能感兴趣的文章:
      • postgresql 如何查看pg_wal目录下xlog文件总大小

      www.htsjk.Com true http://www.htsjk.com/shujukunews/47422.html NewsArticle postgresql开启pg_log日志详细步骤及参数说明, 目录 一、概述:postgresql的运行日志默认是不开启的,如果要查询日志需要手动开启。 二、修改配置文件,开启运行日志: 三、将运行日志...
      评论暂时关闭