Seitenhistorie
...
(Hinweis: Für SQL Logging der Version 3.13.8 oder früher bitte 34. lesen.)
Um alle SQL Statements zu loggen, müssen folgende Zeilen in der log4j.properties hinzugefügt werden:
...
Codeblock |
---|
#JDBCAppender log4j.rootLogger= WARN, stdout, logfile, DB log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DB.driver=org.postgresql.Driver log4j.appender.DB.URL=jdbcUrl=jdbc\:postgresql\://datenbankip\:5432/postgres log4j.appender.DB.user=nuclos log4j.appender.DB.password=nuclos log4j.appender.DB.sql=INSERT INTO <SCHEMA>.LOGS VALUES('%d{yyyy-MM-dd HH:mm:ss.SSS}','%c','%p','%m') log4j.appender.DB.layout=org.apache.log4j.PatternLayout |
Es ist zu empfehlen, den Log-Level möglichst hoch zu setzten (wie hier "WARN") damit die DB beim Loggin nicht überlastet wird. Durch entfernen von "stdout" oder "logfile" kann das Logging auf die DB selber beschränkt werden.
3) Auswertung der SQLTimer Werte aus der Datenbank
Mit "SQLTimer" werden die Angaben zur verbrauchten Zeit an die Message gehängt. Um diese einfacher auszuwerten, können folgende DB-Statements durchgeführt werden:
Codeblock |
---|
ALTER TABLE <SCHEMA>.LOGS ADD COLUMN TIME INTEGER
UPDATE <SCHEMA>.LOGS SET
TIME = CAST(SUBSTRING(MESSAGE FROM POSITION('/' IN MESSAGE)+1 FOR POSITION(' ms' IN MESSAGE)-POSITION('/' IN MESSAGE)) AS INTEGER),
MESSAGE = SUBSTRING(MESSAGE FROM 0 FOR POSITION('/' IN MESSAGE))
WHERE LOGGER = 'SQLTimer' |
Hinweis: Die Syntax der Statements ist PostgreSQL-Spezifisch. Für andere Datenbanken müssen die Statements angepasst werden.
4) Standard SQL Logging (3.13.8 oder früher)
...