Re: Logger in Tabelle und/oder auf cli

From: "Gunnar \"Nick\" Bluth" <gunnar(dot)bluth(dot)extern(at)elster(dot)de>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Logger in Tabelle und/oder auf cli
Date: 2016-03-09 09:00:10
Message-ID: 56DFE61A.7000201@elster.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

-----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-----

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Thiemo Kellner, NHC Barhufpflege 2016-03-09 09:12:53 Re: Logger in Tabelle und/oder auf cli
Previous Message Albe Laurenz 2016-03-09 08:49:16 Re: Logger in Tabelle und/oder auf cli