【问题标题】:Can't change or turn off postgres logging无法更改或关闭 postgres 日志记录
【发布时间】:2013-12-10 12:20:07
【问题描述】:

我正在尝试将 postgres 中的日志记录级别设置为“错误”或完全关闭它。

postgresql.conf 的相关部分:

log_min_error_statement = error
log_statement = 'none'
log_min_duration_statement = -1

我在新创建的用户和数据库上尝试了这些设置,但无济于事。我反复重启了 postgres 服务器。

我也在 psql 中尝试过这些命令:

alter database mydb reset log_statement;
alter database mydb set log statement = 'none';
alter user myuser reset log_statement;
alter user myuser set log_statement = 'none';

alter database mydb reset log_min_duration_statement;
alter database mydb set log log_min_duration_statement = -1;
alter user myuser reset log_min_duration_statement;
alter user myuser set log_min_duration_statement = -1;

一些相关的命令及其输出:

postgres=# select pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)

postgres=# show log_min_duration_statement;
log_min_duration_statement
----------------------------
-1
(1 row)


postgres=# show log_statement;
log_statement
---------------
none
(1 row)

没有应用程序连接到数据库。只是为了确保:

postgres=# select pg_terminate_backend(pid) from pg_stat_activity where datname='mydb';

pg_terminate_backend
----------------------
(0 rows)

编辑:

我不知道客户端消息和日志不是一回事。 上面的设置完成了将 log_min_error_statement 设置为“ERROR”的工作。

更改 client_min_messages 不起作用:

image_search=> show client_min_messages;
client_min_messages
---------------------
notice
(1 row)

image_search=> set client_min_messages to 'ERROR';
SET
image_search=> show client_min_messages;
client_min_messages
---------------------
error
(1 row)

image_search=> insert into ones_counts(key, ones) values (5,5);
INSERT 0 1

那个解决方案https://stackoverflow.com/a/11411109/1508077 也不起作用。

我无意中重复了这个问题。它实际上应该是关于在运行 psql 脚本时抑制 INFO 消息。与日志无关。

我在 OS X Mavericks 上。 Postgres 9.3.0 通过自制软件安装。

【问题讨论】:

  • log_statement = 'all' 将记录(几乎)每条语句。你看log_min_messages (enum)了吗?
  • log_statement = 'none'; log_min_duration_statement = -1; (postgresql.org/docs/current/static/runtime-config-logging.html)。进行这些更改后,重新加载您的 postgresql.conf。例如。作为“postgres”用户,发出SELECT pg_reload_conf();
  • 感谢乔和 bma。我的意思是写“无”而不是“全部”。
  • select rolname,rolconfig from pg_roles -- 这是否表明任何角色仍明确启用这些设置?
  • select rolname, rolconfig from pg_roles 提供两个用户。其中之一是我为数据库创建的角色,第二个是管理员。两个rolnames 都有空的rolconfig 列。

标签: sql database postgresql relational-database


【解决方案1】:

查看您的示例,您似乎看到了插入语句的返回消息。这不是一条日志消息,而只是提供了插入行的信息(OID,如果有的话,受影响的行数)。

你是对的,INSERT 0 1 消息不能在服务器端禁用。它是 psql 显示 PostgreSQL 作为协议的常规部分返回的状态信息。您可以通过将 STDERR 从 psql 重定向到 /dev/null 来禁用它,但这是唯一的方法。

【讨论】:

    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 2020-11-19
    • 2012-11-01
    • 2017-11-11
    • 2012-10-23
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多