Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

1) Standard SQL Logging

(Hinweis: Für Ab 3.14.9 werden auch schreibende SQLs, DDLs und MetaFetches geloggt. Für SQL Logging der Version 3.13.8 oder früher bitte 5. lesen.)

...

Codeblock
#SQL logging
log4j.logger.SQLLogger=DEBUG
log4j.logger.SQLTimer=DEBUG

Dabei ist das SQLTimer-Logging optional durch Hinzufügen eines "#" abwählbar. Damit die neuen Parameter wirksam werden, muss der Server neu gestartet werden. Die Datei log4j.propierties ist im "conf" Verzeichnis des Servers zu finden, zusammen mit den Dateien jdbc.properties und server.properties. Die Ausgabe des SQL Statements vor der Ausführung erscheint dann in der Datei server.log im Verzeichnis logs und sieht z.B. folgendermaßen aus:

Codeblock
2013-06-27 14:44:09,567 DEBUG pool-2-thread-1 [SQLLogger] - SELECT t.INTID, t.DATCREATED, t.STRCREATED, t.DATCHANGED, t.STRCHANGED, t.INTVERSION, t.INTNUCLETVERSION, t.STRPACKAGE, t.STRNAMESPACE, t.DESCRIPTION, t.NAME FROM T_AD_APPLICATION t WHERE (1=1 AND t.INTID IN (?))
=[40013466]

 

2) SQL Performance Logging

Zusätzlich kann noch die Zeit der einzelnen SQL-Statmens gemessen werden. Dazu muss zusätzlich der SQLTimer aktiviert werden:

Codeblock
#SQL logging
log4j.logger.SQLLogger=DEBUG
log4j.logger.SQLTimer=DEBUG

Damit Wenn zusätzlich der SQLTimer angeschaltet ist, wird das SQL Statement ein zweites Mal nach der Ausführung zusammen mit der Dauer ausgegeben:

Codeblock
2013-06-27 14:44:09,599 DEBUG pool-2-thread-1 [SQLTimer] - SELECT t.INTID, t.DATCREATED, t.STRCREATED, t.DATCHANGED, t.STRCHANGED, t.INTVERSION, t.INTNUCLETVERSION, t.STRPACKAGE, t.STRNAMESPACE, t.DESCRIPTION, t.NAME FROM T_AD_APPLICATION t WHERE (1=1 AND t.INTID IN (?))
=[40013466]=(32 ms)

 

23) Insert/Update/Delete SQL StackTrace LoggingUm zusätzlich Insert, Update oder Delete Statements angezeigt zu bekommen (in der Log Datei), kann folgende Zeile in log4j.properties hinzugefügt  (ab 3.14.9)

Es kann zusätzlich noch der StackTrace, sowohl vom Server, als auch vom Client bis zur Ausführung des SQL-Statements geloggt werden.

Codeblock
#SQL logging
log4j.logger.SQLLogger=DEBUG
log4j.logger.ClientStackTrace=DEBUG
log4j.logger.ServerStackTrace=DEBUG

Mit der Option "DEBUG" werden nur StackTrace Elemente, welche mit "org.nuclos" beginnen geloggt. Wenn alle Element ausgegeben werden sollen, dann sollte die Option "TRACE" verwenden werden:

Codeblock
#SQL logging
log4j.logger.org.nuclos.server.dblayer=DEBUGSQLLogger=DEBUG
log4j.logger.ClientStackTrace=TRACE
log4j.logger.ServerStackTrace=TRACE

 

43) JDBCAppender SQL Logging

...

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.

 

45) Auswertung der SQLTimer Werte aus der Datenbank

...

Codeblock
DELETE FROM <SCHEMA>.LOGS WHERE LOGGER != 'SQLTimer'
SELECT SUM(TIME) AS SUM, COUNT(TIME) AS COUNT, MESSAGE FROM <SCHEMA>.LOGS GROUP BY MESSAGE ORDER BY SUM DESC

 

56) Standard SQL Logging (3.13.8 oder früher)

...