Seitenhistorie
...
Um alle SQL Statements zu loggen: So sieht die Konfiguration der log4j2.xml aus, wenn einfache SQLLogging (vor dem Ausführen des SQL Statements) eingeschalten werden soll:
Codeblock | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d %p [%c] - %m%n"/> </Console> <RollingFile name="Logfile" fileName="<Nuclos-Log-Verzeichnis>/server.log" filePattern="<Nuclos-Log-Verzeichnis>/server-%i.log" append="true"> <PatternLayout pattern="%d %p [%c] - %m%n"/> <Policies> <SizeBasedTriggeringPolicy size="5 MB"/> </Policies> <DefaultRolloverStrategy max="20"/> </RollingFile> </Appenders> <Loggers> <Logger name="org.apache.log4j.xml" level="info"/> <Logger name="SQLLogger" level="debug"/> <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="Logfile"/> </Root> </Loggers> </Configuration> |
Die Datei log4j2.xml ist im "conf" Verzeichnis des Servers zu finden, zusammen mit den Dateien jdbc.properties und server.properties. Alternativ (oder additional) kann noch "SQLTiming" angeschalten werden:
Codeblock |
---|
<Logger name="org.apache.log4j.xml" level="info"/>
<Logger name="SQLTimer" level="debug"/> |
Damit wird das SQL nach der Ausführung des Statements auf der Datenbank geloggt und die Ausführungszeit in Millisekungen mit angeben. Hier ist eine typische Ausgabe des SQLTimers:
Codeblock |
---|
2018-01-04 18:10:54,844 DEBUG [SQLTimer] - SELECT COUNT (t.INTID) FROM D2SC_FH_LASTPOSITION t WHERE 1=1 =[]=(2 ms) |
SQL StackTrace Logging
Es kann zusätzlich noch der StackTrace, sowohl vom Server, als auch vom Client, bis zur Ausführung des SQL-Statements geloggt werden. Dafür kann der Textfilter unter "Server Info" im Webclient verwendet werden (siehe oben): Außerdem kann in der Klasse "DataSourceExecuter" ein String-Suchbegriff angegeben werden, entweder über einen Debugger durch setzen des Strings in folgender Methode
...