CONFIGURATION PARAMETER错误报告和日志 / 记录到哪里
log_destination
设置服务器日志输出的目标。
Sets the destination for server log output.
字符串 重载生效 引入 9.0(基线) 现存至 20 devel 0 次默认值变更
- 类型
- 字符串string
- 上下文
- 重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
- 默认值
stderr- 引入版本
- 9.0(基线)
- 状态
- 现存
版本轨迹
相对 PostgreSQL 17 无变化。
默认值变迁
默认值自 PostgreSQL 9.0 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
PostgreSQL支持多种记录服务器消息的方法,包括 stderr,csvlog, jsonlog和 syslog。在Windows上, eventlog也受支持。将此参数设置为以逗号分隔的所需日志目的地列表。默认情况下仅记录到 stderr。 此参数只能在postgresql.conf 文件或服务器命令行中设置。
如果csvlog被包括在log_destination中,日志项会以“逗号分隔值” (CSV)格式被输出,这样可以很方便地把日志载入到程序中。详见Section 19.8.4。要产生 CSV 格式的日志输出,必须启用logging_collector。
如果jsonlog包含在log_destination中, 日志条目将以JSON格式输出,这对将日志加载到程序中很方便。 有关详细信息,请参见Section 19.8.5。 必须启用logging_collector才能生成JSON格式的日志输出。
当包含stderr、csvlog或jsonlog时, 文件current_logfiles会被创建,记录日志收集器当前使用的日志文件位置和相关的日志目的地。 这提供了一种方便的方式来查找实例当前使用的日志。以下是该文件内容的示例:
stderr log/postgresql.log csvlog log/postgresql.csv jsonlog log/postgresql.json
当由于轮换而创建新的日志文件时,以及重新加载log_destination时,current_logfiles会被重新创建。 当log_destination中不包含stderr、csvlog或jsonlog, 以及日志收集器被禁用时,它会被移除。
在大多数 Unix 系统上,你将需要修改系统的syslog守护进程的配置来使用log_destination的syslog选项。PostgreSQL可以在syslog设备LOCAL0到LOCAL7中记录(见syslog_facility),但是大部分平台上的默认syslog配置会丢弃所有这种消息。你将需要增加这样的内容:
local0.* /var/log/postgresql
到syslog守护进程的配置文件来让它工作。
在 Windows 上,当你使用log_destination的eventlog选项时,你应该在操作系统中注册一个事件源极其库,这样 Windows 事件查看器能够清楚地显示事件日志消息。详见Section 18.12。
机制详解
log_destination:设置服务器日志输出的目标。可同时启用多个目标;csvlog 与 jsonlog 需要 logging_collector,而 stderr、syslog 和 Windows eventlog 采用不同传输路径。
log_destination 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。
实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。
调优建议
按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。
-
OLTP在线事务处理
把 log_destination 纳入端到端日志设计,联合验证收集器、轮转、所有权、转运、保留策略以及目标写满后的恢复。
-
OLAP分析与批处理
按分析日志突发为 log_destination 路径定容,并验证轮转或下游摄取不会阻塞数据库进程。
-
小规格低配实例与开发机
为 log_destination 使用有界且易轮转的配置并监控剩余空间;小节点不应保留重复格式或无限文件。
常见问题
- 编辑 log_destination 后没有重新加载配置,也没有核对有效值与后续行为。
- 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
- 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
- 没有回滚计划及客户端或运维兼容测试,就全局修改 log_destination。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 20 ← 19 沿用 19
事实沿用 19
-
PostgreSQL 15 ← 14 仅描述更新
补充说明
Valid values are combinations of "stderr", "syslog", "csvlog", and "eventlog", depending on the platform.Valid values are combinations of "stderr", "syslog", "csvlog", "jsonlog", and "eventlog", depending on the platform.
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
| 版本 | 默认值 | 单位 | 上下文 | 类型 | 最小值 | 最大值 | 枚举值 |
|---|---|---|---|---|---|---|---|
| 9.0 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 9.1 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 9.2 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 9.3 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 9.4 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 9.5 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 9.6 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 10 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 11 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 12 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 13 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 14 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 15 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 16 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 17 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 18 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 19 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
| 20 沿用 | stderr |
— |
重载生效 |
字符串 |
— |
— |
— |
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 记录到哪里 14 | |||||
event_source |
字符串 | 重启生效 | PostgreSQL |
— | |
| 设置在 Windows 事件日志中标识 PostgreSQL 消息的应用名称。 | 现存 | ||||
log_destination |
字符串 | 重载生效 | stderr |
— | |
| 设置服务器日志输出的目标。 | 现存 | ||||
log_directory |
字符串 | 重载生效 | log |
101 次 | |
| 设置日志文件的目标目录。 | 现存 | ||||
log_file_mode |
整数 | 重载生效 | 384 |
— | |
| 设置日志文件的权限模式。 | 现存 | ||||
log_filename |
字符串 | 重载生效 | postgresql-%Y-%m-%d_%H%M%S.log |
— | |
| 设置日志文件名模式。 | 现存 | ||||
log_rotation_age |
整数 | 重载生效 | 1 d |
— | |
| 设置强制轮转日志文件前等待的时间。 | 现存 | ||||
log_rotation_size |
整数 | 重载生效 | 10 MiB |
181 次 | |
| 设置触发轮转前单个日志文件可达到的最大大小。 | 现存 | ||||
log_truncate_on_rotation |
布尔 | 重载生效 | off |
— | |
| 轮转时截断同名的既有日志文件。 | 现存 | ||||
logging_collector |
布尔 | 重启生效 | off |
— | |
| 启动子进程,将 stderr、csvlog 和/或 jsonlog 捕获到日志文件。 | 现存 | ||||
silent_mode |
布尔 | 重启生效 | off |
— | |
| 让服务器以静默模式运行。 | 于 9.2 移除 | ||||
syslog_facility |
枚举 | 重载生效 | local0 |
— | |
| 设置启用 syslog 时使用的 facility。 | 现存 | ||||
syslog_ident |
字符串 | 重载生效 | postgres |
— | |
| 设置在 syslog 中标识 PostgreSQL 消息的程序名。 | 现存 | ||||
syslog_sequence_numbers |
布尔 | 重载生效 | on |
— | |
| 为 syslog 消息添加序号以避免重复消息被抑制。 | 现存 | ||||
syslog_split_messages |
布尔 | 重载生效 | on |
— | |
| 按行并按 1024 字节限制拆分发送给 syslog 的消息。 | 现存 | ||||