application_name (string)
application_name可以是任意的小于NAMEDATALEN字字符 (标准编译是64字符)的字符串。它通常由一个连接服务器后的的应用程序设置。 名字会记录在pg_stat_activity和CSV日志条目中。 也可以通过log_line_prefix参数,包含在规律的日志条目中。 只有可打印的ASCII字符可以被用于application_name。 其他字符会被问号(?)替换。 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来改变这种情况。这些参数默认是关闭的。
debug_print_plan_on_error(boolean)
报错时打印查询计划。默认是off。
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。注意某些客户端程序(例如telesql)在要求密码时会尝试连接两次,因此重复的“收到连接”消息并不一定表示一个错误。
log_disconnections (boolean)
记录会话终止原因。日志输出提供信息类似于log_connections,以及会话持续时间。只有超级用户在会话开启时可以改变这个参数,并且在所有会话中不能改变。缺省是off。
log_duration (boolean)
导致每一个完成的语句的持续时间被记录。默认值是off。只有超级用户可以改变这个设置。对于使用扩展查询协议的客户端,解析、绑定和执行步骤的持续时间将被独立记录。注意设置这个选项和设置log_min_duration_statement为零之间的区别是,超过log_min_duration_statement强制查询的文本被记录,但这个选项不会。因此,如果log_duration为on并且log_min_duration_statement为正值,所有持续时间都将被记录,但是只有超过阈值的语句才会被记录查询文本。这种行为有助于在高负载安装中收集统计信息。
log_error_verbosity (enum)
控制为每一个被记录的消息要写入到服务器日志的细节量。有效值是TERSE、DEFAULT和VERBOSE,每一个都为显示的消息增加更多域。TERSE排除记录DETAIL、HINT、QUERY和CONTEXT错误信息。VERBOSE输出包括SQLSTATE错误码以及产生错误的源代码文件名、函数名和行号。只有超级用户能够更改这个设置。
log_hostname (boolean)
默认情况下,连接日志消息只显示连接主机的IP 地址。打开这个参数将导致也记录主机名。注意根据你的主机名解析设置,这可能会导致很微小的性能损失。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
log_line_prefix (string)
这是一个printf风格的字符串,它在每个日志行的开头输出。%字符开始“转义序列”,它将被按照下文描述的替换成状态信息。未识别的转义被忽略。其他字符被直接复制到日志行。某些转义只被会话进程识别并且被主服务器进程等后台进程当作空。通过指定一个在%之后和该选项之前的数字可以让状态信息左对齐或右对齐。 负值将导致在右边用空格填充状态信息已达到最小宽度,而正值则在左边填充。填充对于日志文 件的人类可读性大有帮助。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。 默认值是'%m [%p] ',它记录时间戳和进程ID。转义效果只限会话%a应用名是%u用户名是%d数据库名是%r远程主机名或 IP 地址,以及远程端口是%h远程主机名或 IP 地址是%p进程 ID否%t无毫秒的时间戳否%m带毫秒的时间戳否%n带毫秒的时间戳(作为 Unix 时间戳)否%i命令标签:会话当前命令的类型是%eSQLSTATE 错误代码否%c会话 ID:见下文否%l对每个会话或进程的日志行号,从 1 开始否%s进程开始的时间戳否%v虚拟事务 ID (backendID/localXID)否%x事务 ID (如果未分配则为 0)否%q不产生输出,但是告诉非会话进程在字符串的这一点停止;会话进程忽略否%%纯文字 %否%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_statement = all设置,包含简单语法错误的语句也不会被记录。这是因为只有在完成基本语法解析并确定了语句类型之后才会发出日志消息。在扩展查询协议的情况下,在执行阶段之前(即在解析分析或规划期间)出错的语句也不会被记录。将log_min_error_statement设置为ERROR(或更低)来记录这种语句。
log_replication_commands (boolean)
导致每个复制命令记录在服务器日志中。缺省值是off。只有超级用户可以修改这个设置。
log_temp_files (integer)
控制记录临时文件名和尺寸。临时文件可以被创建用来排序、哈希和存储临时查询结果。当每一个临时文件被删除时都会制作一个日志项。一个零值记录所有临时文件信息,而正值只记录尺寸大于或等于指定千字节数的文件。默认设置为-1,它禁用这种记录。只有超级用户可以更改这个设置。
log_timezone (string)
设置在服务器日志中写入的时间戳的时区。和TimeZone不同,这个值是集簇范围的,因此所有会话将报告一致的时间戳。内建默认值是GMT,但是通常会被在postgresql.conf中覆盖。initdb将安装一个对应于其系统环境的设置。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。