2013-11-25 4 views
1

Я пытаюсь установить уровень ведения журнала в 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 не работает.

Я непреднамеренно дублировал вопрос. Это действительно должно быть о подавлении сообщений INFO при запуске psql-скриптов. Не о регистрации.

Я нахожусь на OS X Mavericks. Postgres 9.3.0 устанавливается через доморощенный.

+0

'log_statement = 'all'' собирается регистрировать (почти) каждое заявление. Вы посмотрели на 'log_min_messages (enum)'? – Joe

+0

log_statement = 'none'; log_min_duration_statement = -1; (Http://www.postgresql.org/docs/current/static/runtime-config-logging.html). После внесения этих изменений перезагрузите 'postgresql.conf'. Например. как пользователь «postgres», выведите 'SELECT pg_reload_conf();' – bma

+0

Спасибо Джо и bma. Я хотел написать «нет», а не «все». –

ответ

0

Посмотрите на свой пример, похоже, что вы видите сообщение возврата оператора вставки. Это не сообщение о протоколировании, а только информация (в том числе идентификатор, количество затронутых строк) вставленной строки.

Вы правы, что сообщение INSERT 0 1 не может быть отключено на стороне сервера. Это psql, отображающий информацию о состоянии, указанную PostgreSQL в качестве обычной части протокола. Вы можете отключить его, перенаправив STDERR из psql в/dev/null, но это единственный способ.

Смежные вопросы