Seitenhistorie
1) Standard SQL Logging
Um alle SQL Statements zu loggen, müssen folgende Zeilen in der log4j.properties hinzugefügt werden:
...
Codeblock |
---|
2013-02-11 10:05:49,069 DEBUG Thread-6 [impl.standard.StandardSqlDBAccess] - Query to execute: SELECT t.INTID, t.DATCREATED, t.STRCREATED, t.DATCHANGED, t.STRCHANGED, t.INTVERSION, t.ID_ADDR, t.ID_MODULE, t.ID_PROJECT, t.ID_VARIANT FROM (SELECT t.INTID, t.DATCREATED, t.STRCREATED, t.DATCHANGED, t.STRCHANGED, t.INTVERSION, t.ID_ADDR, t.ID_MODULE, t.ID_PROJECT, t.ID_VARIANT , ROW_NUMBER() OVER ( ORDER BY t.INTID ASC) AS RN FROM SV_CONS t WHERE 1=1) t WHERE RN > 6000 AND RN <= 7000 [] 2013-02-11 10:05:49,681 DEBUG Thread-6 [impl.standard.StandardSqlDBAccess] - Time consumed: 610 ms |
2) JDBCAppender SQL Logging
Zusätzlich (oder alternativ) lassen sich die SQL Statements direkt in einer Datenbank schreiben. Dies erledigt das Apacha log4j-Framework. Dazu braucht man eine Datenbank, die nicht notwendigerweise identisch mit der Nuclos-DB sein muss. Dort muss eine Tabelle angelegt werden, z.B. für PostgreSQL (bei Oracle sollte die Spalte "MESSAGE" ein CLOB sein):
Codeblock |
---|
CREATE TABLE SCHEMA.LOGS(
DATED TIMESTAMP NOT NULL PRIMARY KEY,
LOGGER VARCHAR(127) NOT NULL,
LEVEL VARCHAR(15) NOT NULL,
MESSAGE VARCHAR(10485760) NOT NULL
); |
Dazu sind folgende Parameter in die o.g. log4j.propierties hinzuzufügen und entsprechend anzupassen.
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 ACCELINGUA.LOGS VALUES('%d{yyyy-MM-dd HH:mm:ss.SSS}','%C','%p','%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout |
Durch entfernen von "stdout" oder "logfile" kann das Logging auf die DB selber beschränkt werden.