pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
log_destination (string) #PostgreSQL支持多种记录服务器消息的方法,包括stderr和syslog。在 Windows 上,还支持eventlog。将此参数设为所需日志目的地的逗号分隔列表。默认只将日志记录到stderr。此参数只能在postgresql.conf文件中或在服务器命令行上设置。
redirect_stderr (boolean) #这个参数允许把发送到stderr的消息捕获并重定向到日志文件中。这种方法与记录到stderr相结合,通常比记录到syslog更有用,因为某些类型的消息可能不会出现在syslog输出中(一个常见的例子是动态链接器的失败消息)。这个参数只能在服务器启动时设置。
log_directory (string) #当redirect_stderr被启用时,这个参数决定日志文件将被在哪个目录下创建。它可以被指定为一个绝对路径,也可以被指定为一个相对于集簇数据目录的相对路径。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
log_filename (string) #当redirect_stderr被启用时,这个参数设置被创建的日志文件的文件名。该值被视为一种strftime模式,因此%转义可以被用来指定根据时间变化的文件名。如果不存在%转义,PostgreSQL将追加新日志文件创建时间的纪元。例如,如果log_filename是server_log,那么在 Sun Aug 29 19:02:33 2004 MST 开始的日志的文件名将是server_log.1093827753。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
log_rotation_age (integer) #当redirect_stderr被启用时,这个参数决定单个日志文件的最长使用时间。经过指定的分钟数之后,将创建一个新的日志文件。 将这个参数设置为零将禁用基于时间的新日志文件创建。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
log_rotation_size (integer) #当redirect_stderr被启用时,这个参数决定一个个体日志文件的最大尺寸。 当指定千字节数的数据被写入一个日志文件后,将创建一个新的日志文件。 设置为零时将禁用基于大小创建新的日志文件。 这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
log_truncate_on_rotation (boolean) #当redirect_stderr被启用时,这个参数将导致PostgreSQL截断(覆盖而不是追加)任何已有的同名日志文件。不过,截断只在一个新文件由于基于时间的轮转被打开时发生,在服务器启动或基于尺寸的轮转时不会发生。如果被关闭,在所有情况下以前存在的文件将被追加。例如,使用这个设置和一个类似postgresql-%H.log的log_filename将导致产生 24 个每小时的日志文件,并且循环地覆盖它们。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
示例:保留7天的日志,每天一个日志文件,命名为server_log.Mon,server_log.Tue,等等,并自动用本周的日志覆盖上周的日志,将log_filename设置为server_log.%a,将log_truncate_on_rotation设置为on,将log_rotation_age设置为1440。
示例:要保留 24 小时的日志,每个小时一个日志文件,如果日志文件尺寸超过 1GB,也会提前轮转。可以这样做:将log_filename设置为server_log.%H%M、 将log_truncate_on_rotation设置为on、 将log_rotation_age设置为60并且 将log_rotation_size设置为1000000。 在log_filename中包含%M,可让按文件大小触发的轮转选用与整点初始文件名不同的新文件名。
syslog_facility (string) #当启用了向syslog记录时,这个参数决定要使用的syslog“设施”。你可以在LOCAL0、LOCAL1、LOCAL2、LOCAL3、LOCAL4、LOCAL5、LOCAL6、LOCAL7中选择,默认值是LOCAL0。还请参阅系统的syslog守护进程的文档。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。除非服务器编译时带有syslog支持,此参数不可用。
syslog_ident (string) #当启用了向syslog记录时,这个参数决定用来标识syslog中的PostgreSQL消息的程序名。默认值是postgres。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。除非服务器编译时带有syslog支持,此参数不可用。
client_min_messages (string) #控制将哪些消息级别发送给客户端。有效值是DEBUG5、 DEBUG4、DEBUG3、DEBUG2、 DEBUG1、LOG、NOTICE、 WARNING、ERROR、FATAL、 和PANIC。每个级别都包括其后的所有级别。级别越靠后,被发送的消息越少。 默认值是NOTICE。注意,LOG在这里的排名与在 log_min_messages中不同。
log_min_messages (string) #控制将哪些消息级别写入服务器日志。有效值是DEBUG5、DEBUG4、 DEBUG3、DEBUG2、DEBUG1、 INFO、NOTICE、WARNING、 ERROR、LOG、FATAL 和 PANIC。每个级别都包含它后面的所有级别。级别越靠后,发送到日志的消息越少。 默认值是NOTICE。注意,LOG在这里的排名与在 client_min_messages中不同。只有超级用户可以更改此设置。
log_error_verbosity (string) #控制在服务器日志中记录的每条消息的详细程度。有效值为TERSE、 DEFAULT和VERBOSE,它们依次在显示的消息中增加更多字段。 只有超级用户能更改这个设置。
log_min_error_statement (string) #控制在服务器日志中记录哪些导致错误条件的SQL语句。对于达到指定严重级别或更高级别的消息,其日志条目中会包含当前 SQL语句。有效值是DEBUG5、 DEBUG4、DEBUG3、 DEBUG2、DEBUG1、 INFO、NOTICE、 WARNING、ERROR、 FATAL 和 PANIC。 默认值是ERROR,表示导致错误、致命错误或恐慌的语句将被记录。 要有效地关闭失败语句的记录,可将此参数设置为PANIC。 只有超级用户可以更改此设置。
log_min_duration_statement (integer) #如果一条已完成语句的运行时间至少达到指定毫秒数,就记录其持续时间。 将此值设置为零会打印所有语句的持续时间。 负一(默认值)禁用语句持续时间记录。例如,如果设置为250ms, 则会记录所有运行 250ms 或更长时间的 SQL 语句。启用此参数有助于发现应用中未优化的查询。 只有超级用户能更改这个设置。
对于使用扩展查询协议的客户端,Parse、Bind 和 Execute 步骤的持续时间将被独立记录。
当把这个选项和log_statement一起使用时,已经被log_statement记录的语句文本不会在持续时间日志消息中重复。如果你没有使用syslog,我们推荐你使用log_line_prefix记录 PID 或会话 ID,这样你可以使用进程 ID 或会话 ID 把语句消息链接到后来的持续时间消息。
silent_mode (boolean) #静默地运行服务器。如果设置了此参数,服务器将自动在后台运行并脱离任何控制终端。服务器的标准输出和标准错误被重定向到/dev/null,因此发送给它们的所有消息都会丢失。除非选择了syslog日志或者启用了redirect_stderr,否则不鼓励使用此参数,因为它会使错误消息无法被看到。这个参数只能在服务器启动时设置。
下面是这些设置中使用的各种消息严重级别的列表:
DEBUG[1-5]提供供开发者使用的信息。
INFO提供用户隐式请求的信息,例如在VACUUM VERBOSE期间。
NOTICE提供可能对用户有帮助的信息,例如长标识符的截断以及作为主键一部分的索引的创建。
WARNING向用户提供警告,例如在事务块之外的COMMIT。
ERROR报告导致当前命令中止的错误。
LOG报告管理员可能感兴趣的信息,例如检查点活动。
FATAL报告导致当前会话中止的错误。
PANIC报告导致所有会话中止的错误。
debug_print_parse (boolean)debug_print_rewritten (boolean)debug_print_plan (boolean)debug_pretty_print (boolean)这些参数将会让多种调试输出被发出。对每个被执行的查询,它们打印结果分析树、查询重写器输出或执行计划。debug_pretty_print会缩进这些显示,产生可读性更强但长得多的输出格式。要把这种输出真正发送到客户端或服务器日志,必须把client_min_messages或log_min_messages分别设为DEBUG1或更低。这些参数默认是关闭的。
log_connections (boolean) #向服务器日志输出一行内容,详细记录每一个成功的连接。这个参数默认是关闭的,尽管它可能非常有用。某些客户端程序(如psql)在判断是否需要密码时会尝试连接两次,因此重复的“收到连接”消息并不一定表示有问题。此参数只能在postgresql.conf文件中或在服务器命令行上设置。
log_disconnections (boolean) #在会话终止时向服务器日志输出一行与log_connections类似的内容,并且包含会话的持续时间。默认情况下这是关闭的。此参数只能在postgresql.conf文件中或在服务器命令行上设置。
log_duration (boolean) #记录每个已完成语句的持续时间。 默认值为off。 只有超级用户能更改这个设置。
对于使用扩展查询协议的客户端,Parse、Bind 和 Execute 步骤的持续时间将被独立记录。
启用这个选项和设置log_min_duration_statement为零之间的区别是,超过log_min_duration_statement指定的时长会强制记录查询文本,而这个选项不会。因此,如果log_duration为on并且log_min_duration_statement为正值,所有持续时间都将被记录,但是只有超过阈值的语句才会被记录查询文本。这种行为有助于在高负载安装中收集统计信息。
log_line_prefix (string) #这是一个printf风格的字符串,会输出在每个日志行的开头。默认值是一个空字符串。每个可识别的转义都会被替换为下述内容——其他看起来像转义的内容会被忽略。其他字符会直接复制到日志行中。有些转义只被会话进程识别,不适用于主服务器进程等后台进程。Syslog会产生自己的时间戳和进程 ID 信息,因此如果你使用syslog,可能不希望使用那些转义。此参数只能在postgresql.conf文件中或在服务器命令行上设置。
| 转义 | 效果 | 只限会话 |
|---|---|---|
%u |
用户名 | 是 |
%d |
数据库名 | 是 |
%r |
远程主机名或 IP 地址,以及远程端口 | 是 |
%h |
远程主机名或 IP 地址 | 是 |
%p |
进程 ID | 否 |
%t |
时间戳(无毫秒,Windows 上无时区) | 否 |
%m |
带毫秒的时间戳 | 否 |
%i |
命令标签:即产生该日志行的命令 | 是 |
%c |
会话 ID:每个会话的唯一标识符。它由两个以点分隔的 4 字节十六进制数(不含前导零)组成。这两个数分别是会话启动时间和进程 ID,因此它也可以用作节省空间地打印这些项的方式 | 是 |
%l |
每个进程的日志行号,从 1 开始 | 否 |
%s |
会话开始的时间戳 | 是 |
%x |
事务 ID | 是 |
%q |
不产生任何输出,但告诉非会话进程在字符串的这一点停止。会话进程忽略它 | 否 |
%% |
字面字符 % |
否 |
log_statement (string) #控制哪些 SQL 语句被记录。有效值是 none (off)、ddl、mod和 all(所有语句)。ddl记录所有数据定义语句,例如CREATE、ALTER和 DROP语句。mod记录所有ddl语句,外加INSERT、UPDATE、DELETE、TRUNCATE和COPY FROM等数据修改语句。 如果PREPARE、EXECUTE和 EXPLAIN ANALYZE包含合适类型的命令,它们也会被记录。对于使用扩展查询协议的客户端,当收到一个 Execute 消息时会产生日志并且会包括 Bind 参数的值(任何内嵌的单引号会被双写)。
默认值为none。 只有超级用户能更改这个设置。
即使使用log_statement = all设置,包含简单语法错误的语句也不会被记录。这是因为只有在完成基本语法解析并确定了语句类型之后才会发出日志消息。在扩展查询协议的情况下,在 Execute 阶段之前(即在解析分析或规划期间)出错的语句也不会被记录。将log_min_error_statement设置为ERROR(或更低)来记录这种语句。
log_hostname (boolean) #默认情况下,连接日志消息只显示连接主机的 IP 地址。打开这个参数将导致也记录主机名。注意根据你的主机名解析设置,这可能会导致不可忽视的性能开销。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。