Hi,
ich weiß, viele von euch mögen Frameworks nicht so gerne, aber ich habe noch nichts anderes gefunden, was das Out-of-the-Box können soll.
Also vorhaben ist einfach erklärt: ich möchte das bestehende Logging in eine Tabelle umleiten, weil wir vom Unternehmen jede Nacht die Logfiles wegkopiert werden und ich somit über die Anwendung immer nur das Logging bis zur jeweiligen Nacht einsehen kann. Läuft also ein Job um 22:30 Uhr, dann muss ich erst die alten Logs vom Vortag anfordern und diese dann durchsuchen, in der Anwendung habe ich mir mittlerweile eine Textparser gebaut, damit ich ein wenig komfortabler suchen kann.
Ausgangslage:
WLP Server mit Serververwalteten Datenbanken, d.h. ich habe auf die Config im WLP nur bedingt Einfluss und darf nicht frei alle Parameter ändern. In der Anwendung eine persistence.xml. Tabelle auf der Datenbank habe ich mir selbst angelegt.
Das hatte ich mir aus einem Bespiel kopiert. Marker nutzen wir (noch) nicht, aber ich finde das Prinzip spannend und damit ließe sich das Log in der Anwendung nochmal ganz anders Clustern und die Spalte throw habe ich keine Ahnung, was ich damit anfangen soll.
Die meisten Informationen habe ich versucht mir HIER zu holen, aber das klappt irgendwie alles nicht so einfach.
in der log4j2.xml hatte ich diese Konfiguration eingestellt
Damit habe ich auch Logs in die Datenbank bekommen, allerdings hat jedes Log eine Exception geworfen mit der Quintessenz
Im Hintergrund ist auch eine Oracle mit AutoCommit, also sollte log4j eigentlich nicht nochmal zusätzlich versuchen zu committen.
Das zweite Problem ist, dass er für die Message die Spalte nicht richtig verwendet. Die ist CLOB und in der Konfiguration steht auch CLOB, aber der Logger schreibt jede Zeile in einen eigenen Record, das heißt ein Stacktrace hat dann viele Datensätze in der Datenbank.
Laut der hinterlegten Seite sollte die Config aber eigentlich eher so aussehen:
Dann erhalte ich aber folgenden Fehler:
Den verstehe ich garnicht.
Ich hoffe ihr könnt mir helfen.
ich weiß, viele von euch mögen Frameworks nicht so gerne, aber ich habe noch nichts anderes gefunden, was das Out-of-the-Box können soll.
Also vorhaben ist einfach erklärt: ich möchte das bestehende Logging in eine Tabelle umleiten, weil wir vom Unternehmen jede Nacht die Logfiles wegkopiert werden und ich somit über die Anwendung immer nur das Logging bis zur jeweiligen Nacht einsehen kann. Läuft also ein Job um 22:30 Uhr, dann muss ich erst die alten Logs vom Vortag anfordern und diese dann durchsuchen, in der Anwendung habe ich mir mittlerweile eine Textparser gebaut, damit ich ein wenig komfortabler suchen kann.
Ausgangslage:
WLP Server mit Serververwalteten Datenbanken, d.h. ich habe auf die Config im WLP nur bedingt Einfluss und darf nicht frei alle Parameter ändern. In der Anwendung eine persistence.xml. Tabelle auf der Datenbank habe ich mir selbst angelegt.
SQL:
CREATE TABLE LOGGING
(
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
log_date TIMESTAMP,
log_level VARCHAR2(10),
marker VARCHAR2(255),
logger VARCHAR2(255),
message CLOB,
throw CLOB
);
Die meisten Informationen habe ich versucht mir HIER zu holen, aber das klappt irgendwie alles nicht so einfach.
in der log4j2.xml hatte ich diese Konfiguration eingestellt
XML:
<JDBC name="DATABASE" tableName="LOGGING" >
<DataSource jndiName="jdbc/DataSource" />
<Column name="log_level" pattern="%level" />
<Column name="marker" pattern="%marker" />
<Column name="logger" pattern="%logger" />
<Column name="message" pattern="%message" isClob="true" />
<Column name="throw" pattern="%ex{full}" isClob="true" />
</JDBC>
Code:
Caused by: java.sql.SQLException: DSRA9350E: Die Operation Connection.commit ist in einer globalen Transaktion nicht zulässig.
Das zweite Problem ist, dass er für die Message die Spalte nicht richtig verwendet. Die ist CLOB und in der Konfiguration steht auch CLOB, aber der Logger schreibt jede Zeile in einen eigenen Record, das heißt ein Stacktrace hat dann viele Datensätze in der Datenbank.
Laut der hinterlegten Seite sollte die Config aber eigentlich eher so aussehen:
XML:
<JDBC name="DATABASE" tableName="LOGGING" >
<DataSource jndiName="jdbc/DataSource" />
<ColumnMapping name="log_date" />
<ColumnMapping name="log_level" pattern="%level"/>
<ColumnMapping name="marker" pattern="%marker"/>
<ColumnMapping name="logger" pattern="%logger"/>
<ColumnMapping name="message" pattern="%message"/>
</JDBC>
Code:
Caused by: java.sql.SQLException: Fehlender IN- oder OUT-Parameter auf Index:: 5
Ich hoffe ihr könnt mir helfen.