↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 配置参数 / 错误报告和日志

CONFIGURATION PARAMETER错误报告和日志 / 记录到哪里

log_destination

PostgreSQL 支持多种记录服务器消息的方法,包括 stderr,csvlog,jsonlog 和 syslog。

Sets the destination for server log output.

字符串 重载生效 引入 8.0 现存至 20 devel 0 次默认值变更

类型
字符串string
上下文
重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
默认值
stderr
引入版本
8.0
状态
现存

PostgreSQL 18.7 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

stderr 9.0 – 19

已记录的默认值在 PostgreSQL 9.0–19 之间未变。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18.7 手册 · 19.8 错误报告和日志 本站手册 官方原文

PostgreSQL 支持多种记录服务器消息的方法,包括 stderr,csvlog,jsonlog 和 syslog。在 Windows 上,eventlog 也受支持。将此参数设置为以逗号分隔的所需日志目的地列表。默认情况下仅记录到 stderr。此参数只能在 postgresql.conf 文件或服务器命令行中设置。

如果 csvlog 被包括在 log_destination 中,日志项会以“逗号分隔值”(CSV)格式被输出,这样可以很方便地把日志载入到程序中。详见第 19.8.4 节。要产生 CSV 格式的日志输出,必须启用 logging_collector。

如果 jsonlog 包含在 log_destination 中,日志条目将以 JSON 格式输出,这对将日志加载到程序中很方便。有关详细信息,请参见第 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 配置会丢弃所有这种消息。你需要在 syslog 守护进程的配置文件中增加类似以下的内容,使其生效:

local0.*    /var/log/postgresql

在 Windows 上,当你使用 log_destination 的 eventlog 选项时,你应该在操作系统中注册一个事件源及其库,这样 Windows 事件查看器能够清楚地显示事件日志消息。详见第 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。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. 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.

  2. PostgreSQL 8.0 ← 7.4 新增此参数

    PostgreSQL 8.0 起可用

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
8.0 — — — 字符串 — — —
8.1 — — — 字符串 — — —
8.2 — — — 字符串 — — —
8.3 — — — 字符串 — — —
8.4 — — — 字符串 — — —
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 — — — 字符串 — — —

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Reporting and Logging 错误报告和日志 14 个 ↗
记录到哪里 14
event_source 字符串 重启生效 PostgreSQL —
当启用了向事件日志记录时,这个参数决定用来标识日志中 PostgreSQL 消息的程序名。 现存
log_destination 字符串 重载生效 stderr —
PostgreSQL 支持多种记录服务器消息的方法,包括 stderr,csvlog,jsonlog 和 syslog。 现存
log_directory 字符串 重载生效 log 101 次
当 logging_collector 被启用时,这个参数决定日志文件将被在哪个目录下创建。 现存
log_file_mode 整数 重载生效 384 —
在 Unix 系统上,当 logging_collector 被启用时,这个参数设置日志文件的权限(在微软 Windows 上这个参数将被忽略)。 现存
log_filename 字符串 重载生效 postgresql-%Y-%m-%d_%H%M%S.log —
当 logging_collector 被启用时,这个参数设置被创建的日志文件的文件名。 现存
log_rotation_age 整数 重载生效 1 d —
当 logging_collector 被启用时,这个参数决定单个日志文件使用的最长时间,超过后创建一个新的日志文件。 现存
log_rotation_size 整数 重载生效 10 MiB 181 次
当 logging_collector 被启用时,这个参数决定单个日志文件的最大尺寸。 现存
log_truncate_on_rotation 布尔 重载生效 off —
当 logging_collector 被启用时,这个参数将导致 PostgreSQL 截断(覆盖而不是追加)任何已有的同名日志文件。 现存
logging_collector 布尔 重启生效 off —
这个参数启用日志收集器,它是一个捕捉被发送到 stderr 的日志消息的后台进程,并且它会将这些消息重定向到日志文件中。 现存
silent_mode 布尔 重启生效 off —
静默地运行服务器。 于 9.2 移除
syslog_facility 枚举 重载生效 local0 8.41 次
当启用了向 syslog 记录时,这个参数决定要使用的 syslog“设施”。 现存
syslog_ident 字符串 重载生效 postgres —
当启用了向 syslog 记录时,这个参数决定用来标识 syslog 中的 PostgreSQL 消息的程序名。 现存
syslog_sequence_numbers 布尔 重载生效 on —
当日志被记录到 syslog 并且这个设置为 on(默认)时,每一个消息会被加上一个增长的序号作为前缀(例如[2])。 现存
syslog_split_messages 布尔 重载生效 on —
当启用把日志记录到 syslog 时,这个参数决定消息如何送达 syslog。 现存