暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 12.2官方手册学习( 错误报告和日志之记录什么到日志)

PostgreSQL数据库工作学习随笔 2021-09-23
1700

application_name (string)


    application_name可以是任意小于NAMEDATALEN个字符(标准编译中是 64 个字符)的字符串。这通常由一个应用通过到服务器的连接设置。该名称将被显示在pg_stat_activity视图中并被包括在 CSV 日志项中。它也会被通过log_line_prefix包括在普通日志项中。只有可打印 ASCII 字符能被使用在application_name之中。其他字符将被替换为问号(?)。


debug_print_parse (boolean)

debug_print_rewritten (boolean)

debug_print_plan (boolean)


    这个参数启用发出各种调试输出。当设置时,会打印生成的解析树, 查询重写输出,或执行的每个查询的执行计划。这些信息是在LOG 信息级别发出,因此默认的,它们会出现在服务器日志中,但不会发送给客户端。可以通过 client_min_messages和/或log_min_messages 来设置。这些参数缺省是off。这些参数将会让多种调试输出被发出。当被设置时,它们为每一个被执行的查询打印结果分析树、查询重写器输出或执行计划。这些消息在LOG消息级别上被发出,因此默认情况下它们将出现在服务器日志中但不会被发送到客户端。你可以通过调整client_min_messages和/或log_min_messages来改变这种情况。这些参数默认是关闭的。


debug_pretty_print (boolean)


    当被设置时,debug_pretty_print会缩进由debug_print_parse、

debug_print_rewritten或 debug_print_plan产生的输出。这将导致比关闭参数时使用的“紧凑”模式可读性更强但是更长的输出。它默认是打开的。


log_checkpoints (boolean)


    导致检查点和重启点被记录在服务器日志中。一些统计信息也被包括在日志消息中,包括写入缓冲区的数据和写它们所花的时间。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。默认值是关闭。


log_connections (boolean)


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


log_disconnections (boolean)


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


log_duration (boolean)

    导致每一个完成的语句的持续时间被记录。默认值是off。只有超级用户可以改变这个设置。


    对于使用扩展查询协议的客户端,解析、绑定和执行步骤的持续时间将被独立记录。


log_error_verbosity (enum)


    控制为每一个被记录的消息要写入到服务器日志的细节量。有效值是TERSE、DEFAULT和VERBOSE,每一个都为显示的消息增加更多域。TERSE排除记录DETAIL、HINT、QUERY和CONTEXT错误信息。VERBOSE输出包括SQLSTATE错误码(见附录 A )以及产生错误的源代码文件名、函数名和行号。只有超级用户能够更改这个设置。


log_hostname (boolean)


    默认情况下,连接日志消息只显示连接主机的 IP 地址。打开这个参数将导致也记录主机名。注意根据你的主机名解析设置,这可能会导致很微小的性能损失。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。


log_line_prefix (string)


    这是一个printf风格的字符串,它在每个日志行的开头输出。%字符开始“转义序列”,它将被按照下文描述的替换成状态信息。未识别的转义被忽略。其他字符被直接复制到日志行。某些转义只被会话进程识别并且被主服务器进程等后台进程当作空。通过指定一个在%之后和该选项之前的数字可以让状态信息左对齐或右对齐。负值将导致在右边用空格填充状态信息已达到最小宽度,而正值则在左边填充。填充对于日志文 件的人类可读性大有帮助。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。默认值是'%m [%p] ',它记录时间戳和进程ID。



    %c转义打印一个准唯一的会话标识符,它由两个 4 字节的十六进制数(不带先导零)组成,以点号分隔。这些数字是进程启动时间和进程 ID,因此%c也可以被用作保存打印这些项的方式的空间。例如,要从pg_stat_activity生成会话标识符,使用这个查询:SELECT to_hex(trunc(EXTRACT(EPOCH FROM backend_start))::integer) || '.' ||to_hex(pid) FROM pg_stat_activity;


    提示:如果你为log_line_prefix设置了非空值,你通常应该让它的最后一个字符为空格,这样用以提供和日志行的剩余部分的视觉区别。也可以使用标点符号。


    提示:Syslog产生自己的时间戳和进程 ID 信息,因此如果你记录到syslog你可能不希望包括哪些转义。


    提示:在包括仅在会话(后端)上下文中可用的信息(如用户名或者数据库名)时,%q转义很有用。例如:log_line_prefix = '%m [%p] %q%u@%d/%a '


log_lock_waits (boolean)


    控制当一个会话为获得一个锁等到超过deadlock_timeout时,是否要产生一个日志消息。这有助于决定是否所等待造成了性能低下。默认值是off。只有超级用户可以更改这个设置。


log_statement (enum)


    控制哪些 SQL 语句被记录。有效值是 none (off)、ddl、mod和 all(所有语句)。ddl记录所有数据定义语句,例如CREATE、ALTER和 DROP语句。mod记录所有ddl语句,外加数据修改语句例如INSERT, UPDATE、DELETE、TRUNCATE, 和COPY FROM。如果PREPARE、EXECUTE和 EXPLAIN ANALYZE包含合适类型的命令,它们也会被记录。对于使用扩展查询协议的客户端,当收到一个执行消息时会产生日志并且会包括绑定参数的值(任何内嵌的单引号会被双写)。


    默认值是none。只有超级用户可以改变这个设置。


    注意:即使使用log_statement = all设置,包含简单语法错误的语句也不会被记录。这是因为只有在完成基本语法解析并确定了语句类型之后才会发出日志消息。在扩展查询协议的情况下,在执行阶段之前(即在解析分析或规划期间)出错的语句也不会被记录。将log_min_error_statement设置为ERROR(或更低)来记录这种语句。


log_replication_commands (boolean)

    导致每一个复制命令都被记录在服务器日志中。关于复制命令的详细信息请见第 52.4 节 。默认值是off。只有 超级用户可以更改这个设置。


log_temp_files (integer)


    控制记录临时文件名和尺寸。临时文件可以被创建用来排序、哈希和存储临时查询结果。如果启用这个设置,当每一个临时文件被删除时都会产生一个日志项。一个零值记录所有临时文件信息,而正值只记录尺寸大于或等于指定数据量的文件。如果指定值时没有单位,则以千字节为单位。默认设置为 -1,它禁用这种记录。只有超级用户可以更改这个设置。


log_timezone (string)


    设置在服务器日志中写入的时间戳的时区。和TimeZone不同,这个值是集簇范围的,因此所有会话将报告一致的时间戳。内建默认值是GMT,但是通常会被在postgresql.conf中覆盖。initdb将安装一个对应其系统环境的设置。详见第 8.5.3 节 。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。


文章转载自PostgreSQL数据库工作学习随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论