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 beilog_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, ProblemSELECT 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. Beiderolname
s leererolconfig
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
undshow log_statement
? - Ausgabe von
select pg_reload_conf();
: ` pg_reload_conf ---------------- t (1 Zeile)` Protokolle noch zeigen. Ausgängeshow log_min_duration_statement;
undshow log_statement;
zeigen-1
undnone
. - 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 entwederpsql -d <yourdb> -U <youruser> -qtAc "select ..."
oder nurpsql -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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blick auf Ihr Beispiel, wie es aussieht, Sie werden sehen, die Rückkehr Meldung der insert-Anweisung angezeigt. Dies ist nicht eine logging-Meldung, sondern stellt lediglich die Informationen (OID wenn überhaupt, die Anzahl der betroffenen Zeilen) der eingefügten Zeile.
Du Recht haben, dass
INSERT 0 1
Nachricht kann nicht deaktiviert werden, auf der server-Seite. Es ist psql Anzeige von status-Infos zurück gegeben, die von PostgreSQL als eine routine Teil des Protokolls. Sie können es deaktivieren, indem umleiten von STDERR aus psql zu /dev/null-aber das ist der einzige Weg.