您可以配置 PostgreSQL 来区分客户端和服务器日志吗?

您可以配置 PostgreSQL 来区分客户端和服务器日志吗?

场景:您正在为其他人托管 PostgreSQL 并希望提供良好的服务。

作为数据库托管者,我希望了解 Postgres 何时崩溃以及其他与管理相关的信息。但是,“ERROR”和“FATAL”标记都包含由客户端行为生成的错误。

  • “错误” 特别受污染,无法被考虑用于警报。
  • “FATAL” 污染较少,包含重要的 Postgres 错误。(例如启动和内存问题)

有没有办法配置 Postgres 来区分服务器和客户端日志?

答案1

可以配置服务器(每个会话)向客户端发送哪些消息。“每个会话”意味着任何客户端都可以在会话开始时将变量设置为适当的值。设置是客户端最小消息数

控制哪些消息级别发送给客户端。有效值为 DEBUG5、DEBUG4、DEBUG3、DEBUG2、DEBUG1、LOG、NOTICE、WARNING 和 ERROR。每个级别都包括其后的所有级别。级别越靠后,发送的消息越少。默认值为 NOTICE。请注意,此处的 LOG 级别与log_min_messages

INFO 级别的消息始终会发送给客户端。

因此让客户端在会话开始时执行以下操作:

SET client_min_messages to 'DEBUG5';

他们将获得一切皆有可能

postgres=# select * from pg_views;
DEBUG:  StartTransaction(1) name: unnamed; blockState: DEFAULT; state: INPROGRESS, xid/subid/cid: 0/1/0
DEBUG:  rehashing catalog cache id 7 for pg_attribute; 257 tups, 128 buckets
DEBUG:  rehashing catalog cache id 7 for pg_attribute; 513 tups, 256 buckets
DEBUG:  CommitTransaction(1) name: unnamed; blockState: STARTED; state: INPROGRESS, xid/subid/cid: 0/1/0

这完全独立于配置的服务器日志其他设置

相关内容