Re: Logger in Tabelle und/oder auf cli
"Gunnar \"Nick\" Bluth" <[email protected]> Wed, 9 Mar 2016 10:00:10 +0100
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <[email protected]> |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Am 09.03.2016 um 09:39 schrieb Thiemo Kellner, NHC Barhufpflege: > Danilo, danke für Deine Antwort. Raise schreibt auch ins Serverlog, > was ich nicht möchte, um es nicht zu verschmutzen. Abgesehen davon > habe ich keine Kontrolle, was alles geschrieben wird, abgesehen von > der Meldung selbst. Am meisten vermisse ich da, dass der Erzeuger, > zum Beispiel die Function, aus der der Eintrag kommt, nicht erfasst > wird. Unter der Annahme, dass du möglichst flexibel bleiben willst, denke ich spontan an LISTEN/NOTIFY und einen externen oder internen Consumer, der die geschickten Nachrichten async abgreift und dann dahin schickt, wo du sie willst. Das kann dann halt eine Datei, eine Tabelle (auch auf einer anderen DB) oder was auch immer sein. Die 8GB oder so default-queue-size sollten ja reichen? ;-) Das Format musst du dann latürnich selber festlegen... und den Caller mit reinschreiben, denn den findet man nicht so einfach (vgl. http://stackoverflow.com/questions/12611596/getting-name-of-the-current-function-inside-of-the-function-with-plpgsql) > Mit meiner Arbeit mit Oracle habe ich es sehr schätzen gelernt, > dass der von mir erwähnte Logger in eine Tabelle schreibt. Zur > Entwicklung war die Kommandozeilenausgabe sehr praktisch, im > Betrieb aber konnte diese Häufig nicht genutzt werden, zum > Beispiel, weil der Aufruf innerhalb von PowerCenter erfolgte. Es spricht ja nichts dagegen, sich einen Wrapper zu schreiben, der alles auf minimalem Loglevel _auch_ loggt _und_ in eine Tabelle schreibt (am Besten per FDW, sonst verschwinden deine Nachrichten, wenn die Transaktion wegen eines Fehlers abbricht; nicht das, was du beim Entwickeln haben willst!). In PROD hast du dann ja einen höheren Wert in "log_min_messages". > PL/Python zu verwenden bin ich zögerlich, weil zu dessen Nutzung > erhebliche Privilegien erforderlich sind. PL/TCL möchte ich nicht Na ja, deine Logging-Prozedur würdest du ja selber schreiben... dann "SECURITY DEFINER" drauf und gut ist. <snip> >> Am 08.03.2016 um 19:36 schrieb Thiemo Kellner, NHC Barhufpflege: >>> @Andreas und Hans >>> >>> Ich möchte NICHT die Änderungen von Daten in Tabellen >>> protokollieren sondern aus einer der PL-Sprachen Informationen >>> auf die Kommandozeile und/oder in eine Logging-Tabelle >>> schreiben. Folgend ein Ausschnitt aus einem Oracle-Package. Die >>> Procedure-Aufrufe TRACE, DEBUG, INFO, WARN, ERROR, FATAL ist >>> das worum es mir geht. >>> >>> function GET_CHAR_DIFF_CLASSES( P_STRING_A >>> varchar2, P_STRING_B varchar2, >>> P_LOG_LEVEL PKG_PLNSQL_LOGGER.GT_LOG_LEVEL := 'INFO', >>> P_DO_LOG_2_DBMS_OUTPUT boolean := false, >>> P_DO_CACHE_OVERRIDE boolean := false, >>> P_DO_TRUNCATE_LOG_TABLE boolean := false ) return >>> GT_CHARACTER_POSITIONS is Wenn dir solcher Code gefällt, solltest du weniger Scheu vor Neuem zeigen (pun intended ;-). Just my 2p, - -- Gunnar "Nick" Bluth DBA ELSTER Tel: +49 911/991-4665 Mobil: +49 172/8853339 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBAgAGBQJW3+YaAAoJEDh0MJ2tR5CnykUP/3384M3caIBqSr3QX9vDdacv mxtrM9IOXtx9A1Wmn35ZyN0DF0cqorr/iViHmVLdurUfeQcwbSWvoB1rEw+IjxA2 ke9hN7Zae5+DbUfi5lJdoVu+WsvbAArcbo/0QK7QB2RMbXAMXku+NOAAVqqpeIAb dmqZ24Nz3BEdLa/UlvswTwBh2JSqL6y15CD+0dJUyy+PH/I4RYPD6Ju+R9EAvZXD Uyp6+eZXbPJWLHvH/xgfR7XZrqYMshh1llpTMiU3eur5TgGUH9IJ6zH900V6j5fh LP23M/kH5mfusA5F0UbOkVUrly5NkObUetBsXk9m52LKr7q2UF3txzZINRd7a7La ZI41jgBeMmKTeuASjvbByZvSrs7EGCEQiwbNdQEd6OTLW/mEf1DlzTO/xnYKrCez 6MstTNoUAPVXIwXTC6Ba0vJ3Fflv2iVUwQ7W8sUYaHNuWGlqkT5ZZdmJh/k0t+7x oWA90onhSqBS7rUkfn+N3PA96cVWnlkGoQUShSc62Q4EDE2LISFYqxSna/f2BG76 JqcaspoTIBg0ZxnLO9o76UTrUgvHXBSeNrMjLa67eGuXHIGA5CzUHewmag4CASjM 5D2Cz71ng/wX47ZF2K5NyOPMPMlWHmcJaCve3pUkVRgh/s6pO6BIWd96pxpdrc/K vMyDWtr06xfj0MQro19X =S/UG -----END PGP SIGNATURE----- -- Sent via pgsql-de-allgemein mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-de-allgemein