我正在尝试将 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。
最佳答案
查看您的示例,您似乎看到了显示的插入语句的返回消息。这不是日志消息,只是提供插入行的信息(OID,如果有的话,受影响的行数)。
你是对的,INSERT 0 1
消息不能在服务器端被禁用。它是 psql 显示由 PostgreSQL 作为协议(protocol)的例行部分返回的状态信息。您可以通过将 STDERR 从 psql 重定向到/dev/null 来禁用它,但这是唯一的方法。
关于sql - 无法更改或关闭 postgres 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198745/