CONFIGURATION PARAMETER错误报告和日志 / 记录什么
log_connections
记录连接建立与初始化过程中的指定阶段。
Logs specified aspects of connection establishment and setup.
字符串 连接时(超级用户) 引入 9.0(基线) 现存至 20 devel 1 次默认值变更
- 类型
- 字符串string
- 上下文
- 连接时(超级用户)只能在连接建立时由超级用户设置
- 默认值
空字符串原始值 ''- 引入版本
- 9.0(基线)
- 状态
- 现存
版本轨迹
相对 PostgreSQL 17:默认值由 off 改为 空字符串,类型由 布尔 改为 字符串。
默认值变迁
默认值一共换过 2 档,每段的宽度按它覆盖的大版本数伸展,深色的一段是当前查看的 PostgreSQL 18。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
控制是否记录服务器每次连接的各个阶段。默认值为空字符串 '',表示禁用所有连接日志。下列选项既可以单独指定, 也可以用逗号分隔的列表指定:
Table 19.3. 连接日志选项
| 名称 | 说明 |
|---|---|
receipt | 记录收到连接。 |
authentication | 记录认证方法用于识别用户的原始身份。在大多数情况下,该身份字符串与PostgreSQL用户名一致,但某些第三方认证方法可能会在服务器存储之前修改原始用户标识符。无论此设置为何值,认证失败始终都会被记录。 |
authorization | 记录授权成功完成。此时连接已经建立,但后端尚未完全初始化。日志消息会包含授权后的用户名,以及数据库名和应用名(如果适用)。 |
setup_durations | 记录从 postmaster 接受传入连接开始,到连接准备好执行第一条查询为止,建立连接并完成后端初始化所花费的时间。日志消息会包含三个时长:总设置时长、fork 新后端所花费的时间,以及用户认证所花费的时间。 |
all | 一个便捷别名,相当于指定所有选项。如果在其他选项列表中包含all,则会记录连接的所有方面。 |
断开连接的日志由log_disconnections单独控制。
出于向后兼容性考虑,on、off、 true、false、yes、 no、1和0仍然受支持。 正向值等价于指定receipt、authentication和 authorization选项。
只有超级用户和具有适当SET权限的用户可以在会话开始时更改此参数, 并且在会话内部完全不能更改。
某些客户端程序(例如psql)在要求密码时会尝试连接两次,因此重复的“收到连接”消息并不一定表示一个错误。
机制详解
PostgreSQL 10–17 中,log_connections 是布尔参数,启用后记录成功连接。PostgreSQL 18 将其改为字符串列表,精确选项为 receipt、authentication、authorization、setup_durations 与 all;空字符串关闭连接日志。为兼容旧配置,on、true、yes、1 等价于 receipt,authentication,authorization,off、false、no、0 等价于空列表。认证失败无论本参数为何值都会记录。
log_connections 属于 SUPERUSER_BACKEND 上下文:超级用户或获授相应 SET 权限的角色可在会话启动时选择它,但后端会话启动后不能再修改。因此配置变化只影响新会话。
receipt 记录连接到达,authentication 记录认证方法提交的原始身份,authorization 记录带用户、数据库和应用上下文的成功授权,setup_durations 记录总初始化、后端 fork 与认证耗时。会话结束由 log_disconnections 单独控制;连接身份与拓扑仍属于敏感日志数据。
调优建议
按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。
-
OLTP在线事务处理
常规 OLTP 只记录审计或延迟问题真正需要的阶段;authorization 以较低日志量保留成功连接轨迹,receipt 与 authentication 增加授权前证据。只有排查连接启动延迟时才加入 setup_durations。
-
OLAP分析与批处理
分析会话更少但更长,authorization 加 setup_durations 可用于归因昂贵的连接初始化;不要仅因查询量较低就使用 all。
-
小规格低配实例与开发机
列表保持最小,并继续监控不受本参数影响的认证失败。确认日志存储与脱敏能够安全保留原始身份和应用名称。
常见问题
- 使用不存在的 setup,而不是 PostgreSQL 18 的有效选项 setup_durations。
- 误以为兼容值 on 等于 all;它不含 setup_durations,只映射到 receipt、authentication、authorization。
- 期待既有会话继承新值,而该参数在后端启动时已经固定。
- 未考虑 psql 等客户端可能探测两次就把重复 receipt 当作攻击,或在没有访问控制策略时长期保留原始身份。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 20 ← 19 沿用 19
事实沿用 19
-
PostgreSQL 18 ← 17 默认值变更
默认值
off空字符串类型布尔字符串简述Logs each successful connection.Logs specified aspects of connection establishment and setup. -
PostgreSQL 9.5 ← 9.4 属性变更
上下文
连接时连接时(超级用户)
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
| 版本 | 默认值 | 单位 | 上下文 | 类型 | 最小值 | 最大值 | 枚举值 |
|---|---|---|---|---|---|---|---|
| 9.0 | off |
— |
连接时 |
布尔 |
— |
— |
— |
| 9.1 | off |
— |
连接时 |
布尔 |
— |
— |
— |
| 9.2 | off |
— |
连接时 |
布尔 |
— |
— |
— |
| 9.3 | off |
— |
连接时 |
布尔 |
— |
— |
— |
| 9.4 | off |
— |
连接时 |
布尔 |
— |
— |
— |
| 9.5 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 9.6 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 10 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 11 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 12 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 13 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 14 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 15 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 16 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 17 | off |
— |
连接时(超级用户) |
布尔 |
— |
— |
— |
| 18 | 空字符串 |
— |
连接时(超级用户) |
字符串 |
— |
— |
— |
| 19 | 空字符串 |
— |
连接时(超级用户) |
字符串 |
— |
— |
— |
| 20 沿用 | 空字符串 |
— |
连接时(超级用户) |
字符串 |
— |
— |
— |
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 记录什么 25 | |||||
application_name |
字符串 | 会话 | 空字符串 |
— | |
| 设置在统计信息和日志中报告的应用名称。 | 现存 | ||||
debug_pretty_print |
布尔 | 会话 | on |
— | |
| 对解析树和计划树的显示进行缩进美化。 | 现存 | ||||
debug_print_parse |
布尔 | 会话 | off |
— | |
| 记录每个查询的解析树。 | 现存 | ||||
debug_print_plan |
布尔 | 会话 | off |
— | |
| 记录每个查询的执行计划树。 | 现存 | ||||
debug_print_raw_parse |
布尔 | 会话 | off |
— | |
| 把每条查询的原始解析树写入日志。 | 现存 | ||||
debug_print_rewritten |
布尔 | 会话 | off |
— | |
| 记录每个查询重写后的解析树。 | 现存 | ||||
log_autoanalyze_min_duration |
整数 | 重载生效 | 10 min |
— | |
| 设置记录 autovacuum ANALYZE 动作的最短执行时间。 | 现存 | ||||
log_autovacuum_min_duration |
整数 | 重载生效 | 10 min |
152 次 | |
| 设置记录 autovacuum 操作所需达到的最短执行时间。 | 现存 | ||||
log_checkpoints |
布尔 | 重载生效 | on |
151 次 | |
| 记录每次检查点。 | 现存 | ||||
log_connections |
字符串 | 连接时(超级用户) | 空字符串 |
182 次 | |
| 记录连接建立与初始化过程中的指定阶段。 | 现存 | ||||
log_disconnections |
布尔 | 连接时(超级用户) | off |
9.51 次 | |
| 记录会话结束及其持续时间。 | 现存 | ||||
log_duration |
布尔 | 会话(超级用户) | off |
— | |
| 记录每条已完成 SQL 语句的执行时长。 | 现存 | ||||
log_error_verbosity |
枚举 | 会话(超级用户) | default |
— | |
| 设置日志消息的详细程度。 | 现存 | ||||
log_hostname |
布尔 | 重载生效 | off |
— | |
| 在连接日志中记录主机名。 | 现存 | ||||
log_line_prefix |
字符串 | 重载生效 | %m [%p] |
101 次 | |
| 控制每行日志前添加的信息。 | 现存 | ||||
log_lock_failures |
布尔 | 会话(超级用户) | off |
— | |
| 记录锁获取失败。 | 现存 | ||||
log_lock_waits |
布尔 | 会话(超级用户) | off |
191 次 | |
| 记录持续时间较长的锁等待。 | 现存 | ||||
log_parameter_max_length |
整数 | 会话(超级用户) | -1 B |
— | |
| 设置记录语句时绑定参数值可写入日志的最大字节数。 | 现存 | ||||
log_parameter_max_length_on_error |
整数 | 会话 | 0 B |
— | |
| 设置发生错误时绑定参数值可写入日志的最大字节数。 | 现存 | ||||
log_recovery_conflict_waits |
布尔 | 重载生效 | off |
— | |
| 记录备用库恢复冲突等待。 | 现存 | ||||
log_replication_commands |
布尔 | 会话(超级用户) | off |
— | |
| 记录每条复制命令。 | 现存 | ||||
log_statement |
枚举 | 会话(超级用户) | none |
— | |
| 设置要记录的 SQL 语句类型。 | 现存 | ||||
log_statement_max_length |
整数 | — | — | ||
| 如果大于零,通过 log_statement、log_min_duration_statement、log_min_duration_sample 或 log_transaction_sample_rate 记录的每条语句,其文本都会被截断为最多这么多字节。 | 现存 | ||||
log_temp_files |
整数 | 会话(超级用户) | -1 kB |
— | |
| 记录大于指定千字节数的临时文件使用。 | 现存 | ||||
log_timezone |
字符串 | 重载生效 | GMT |
9.22 次 | |
| 设置日志消息使用的时区。 | 现存 | ||||