选择 打开 改范围 完整检索页

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

文档 / 配置参数 / 错误报告和日志

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 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

stderr 9.0 – 20

默认值自 PostgreSQL 9.0 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

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

PostgreSQL支持多种记录服务器消息的方法,包括 stderrcsvlogjsonlogsyslog。在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格式的日志输出。

当包含stderrcsvlogjsonlog时, 文件current_logfiles会被创建,记录日志收集器当前使用的日志文件位置和相关的日志目的地。 这提供了一种方便的方式来查找实例当前使用的日志。以下是该文件内容的示例:

stderr log/postgresql.log
csvlog log/postgresql.csv
jsonlog log/postgresql.json

当由于轮换而创建新的日志文件时,以及重新加载log_destination时,current_logfiles会被重新创建。 当log_destination中不包含stderrcsvlogjsonlog, 以及日志收集器被禁用时,它会被移除。

Note

在大多数 Unix 系统上,你将需要修改系统的syslog守护进程的配置来使用log_destinationsyslog选项。PostgreSQL可以在syslog设备LOCAL0LOCAL7中记录(见syslog_facility),但是大部分平台上的默认syslog配置会丢弃所有这种消息。你将需要增加这样的内容:

local0.*    /var/log/postgresql

syslog守护进程的配置文件来让它工作。

在 Windows 上,当你使用log_destinationeventlog选项时,你应该在操作系统中注册一个事件源极其库,这样 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。

演化历史

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

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. 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 重载生效 字符串

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Reporting and Logging 错误报告和日志 14 个
记录到哪里 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 的消息。 现存