Können nicht ändern oder deaktivieren postgres-Protokollierung

Ich versuche, legen Sie den Protokolliergrad in postgres "Fehler" aus oder schalten Sie es aus insgesamt.

Relevanten Teile von postgresql.conf:

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

Habe ich versucht diese Einstellungen auf die neu erstellte Benutzer und Datenbanken ohne Erfolg. Ich neu gestartet postgres-server wiederholt.

Ich habe auch versucht, diese Befehle in 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;

Einige relevante Befehle und deren Ausgänge:

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)

Es sind keine Anwendungen mit der Datenbank verbunden. Nur um sicherzugehen:

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

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

edit:

Ich war nicht bewusst, dass client-Meldungen und Protokolle sind nicht das gleiche.
Einstellungen über die Arbeit erledigen, für die Einstellung log_min_error_statement "FEHLER".

Ändern client_min_messages nicht funktioniert:

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

Dass die Lösung https://stackoverflow.com/a/11411109/1508077 funktioniert entweder nicht.

Ich versehentlich dupliziert die Frage. Es sollte wirklich sein über die Unterdrückung von INFO-Meldungen beim ausführen von psql scripts. Nicht über die Protokollierung.

Bin ich auf OS X Mavericks. PostgreSQL 9.3.0 installiert via homebrew.

  • log_statement = 'all' geht auf log in (fast) jede einzelne Anweisung. Hat man sich bei log_min_messages (enum)?
  • log_statement = 'none'; log_min_duration_statement = -1; (postgresql.org/docs/current/static/runtime-config-logging.html). Nachdem Sie die änderungen, laden Sie Ihre postgresql.conf. ZB. wie der "postgres" - Benutzer, Problem SELECT pg_reload_conf();
  • Dank Joe und bma. Ich meinte zu schreiben, 'none' statt off 'alle'.
  • select rolname,rolconfig from pg_roles - tut, die zeigen, dass jede Rolle explizit noch diese Einstellungen aktiviert?
  • select rolname, rolconfig from pg_roles gibt zwei Benutzer. Einer von Ihnen ist die Rolle, die ich für die Datenbank erstellt und der zweite ist der admin. Beide rolnames leere rolconfig Spalte.
  • select pg_reload_conf(); als admin hat nicht funktioniert.
  • "hat nicht funktioniert"? Was meinst du? Es errored out? Auch, was ist der output des folgenden: show log_min_duration_statement und show log_statement?
  • Ausgabe von select pg_reload_conf();: ` pg_reload_conf ---------------- t (1 Zeile)` Protokolle noch zeigen. Ausgänge show log_min_duration_statement; und show log_statement; zeigen -1 und none.
  • Sie haben eine Applikation verbunden, z.B. JDBC oder so? Wenn ja, versuchen Sie einen Neustart des app-verbindungen, oder starten Sie den db-cluster, um sicherzustellen, dass alle verbindungen unterbrochen sind. Ich habe diese änderungen nicht eine Wirkung, wenn unsere Java-apps verbunden sind, so dass eine Verbindung ein Neustart erforderlich ist.
  • Ich versuche einfache insert-Befehle in PostgreSQL Kommandozeile. Es sind keine Anwendungen mit der Datenbank verbunden. Nur um sicher zu gehen lief ich mit diesem Befehl: select pg_terminate_backend(pid) from pg_stat_activity where datname='mydb'; Es sind 0 Zeilen. Logs noch zeigen.
  • Kann Sie klären: "Meldet immer noch" bedeutet, dass neue Einträge in der db-log sind immer noch (neu) angezeigt wird, wenn Sie tail log?
  • Ha, das ist es. Mit den Worten "Meldet immer noch" habe ich das nicht gemeint-server.log-Datei, die sich aus verhält, wie es sollte. Postgres meldet nur Fehler. Was ich mit "Meldet immer noch" ist, zeigen Meldungen wie diese, wenn ich ausführen von insert-Anweisung: INSERT 0 1. Dank der bma. Gibt es eine Möglichkeit, diese Meldungen aus? Ich habe eine große Reihe von riesigen Dateien, in denen Millionen von insert-Anweisungen zu verschiedenen Tabellen. Diese Nachrichten, die Dinge verlangsamen sich deutlich.
  • Sind Sie in der Lage, um zu versuchen, die Erteilung der folgenden Punkte, bevor Sie eine Verbindung herstellen? set client_min_messages to 'WARNING'; (oder FEHLER)
  • bma, schauen Sie bitte auf der letzten Bearbeitung der Frage. Es ist mehr lesbar, dass ein Kommentar wäre.
  • Ich bin running out of Ideen. Haben Sie versucht, die Ausführung psql mit entweder psql -d <yourdb> -U <youruser> -qtAc "select ..." oder nur psql -d <yourdb> -U <youruser> -qc "select ..." ?
  • Ich habe bis auf das verdammte Ding an und schrieb ein python-Skript führt diese Aussagen. Keine info-Meldungen werden angezeigt. Dank der bma! Ich wünschte, ich könnte Sie übertragen einige Punkte für die Hilfe.

InformationsquelleAutor andrew_vvv | 2013-11-25
Schreibe einen Kommentar