LogManager logger schreibt nicht in Catch() Zweig

ralfb1105

Bekanntes Mitglied
Hallo zusammen,

ich versuche mittels Java Logger Class Log Meldungen meiner Applikation auszugeben, was auch prinzipiell funktioniert. Wenn ich allerdings in einem catch() Zweig eine Log Meldung schreiben will wird diese nicht geschrieben!?

Hier meine Logging Konfiguration:
Java:
private static Logger logWriter = Logger.getLogger(OraSimpleBench.class.getName());
Java:
final InputStream inputStream = OraSimpleBench.class.getResourceAsStream("/logging.properties");
        try
        {
            LogManager.getLogManager().readConfiguration(inputStream);
        }
        catch (final IOException ex) {
            Logger.getAnonymousLogger().severe("Could not load default logging.properties file");
            Logger.getAnonymousLogger().severe(ex.getMessage());
        }
Wenn ich z.B. in einem if-else den Logger aufrufe wird alles in das Log File geschrieben:
Java:
if (pingExitCode == 0) {
                    logWriter.info("Task DB Connect: Try to ping database host: Success!");
                    publish("Task DB Connect: Try to ping database host: Success!");
                       
                } else {
                    logWriter.severe("Task DB Connect: Try to ping database host: Failed with Exit Code: " + pingExitCode);
                       publish("Task DB Connect: Try to ping database host:\n");
                       publish("Ping Failed with Exit Code " + pingExitCode + "\n");
                       jLStatusDbConnect.setIcon(new ImageIcon(getClass().getClassLoader().getResource(iconNotOk)));
                       jBTestDBconnect.setEnabled(true);
                       cancel(true);
                }
So sieht dann der Log Eintrag aus, einmal OK und einmal nicht OK:
Code:
[Mon Apr 30 18:07:40 CEST 2018] INFO: Task DB Connect: Try to ping database host: Success!

[Mon Apr 30 18:16:28 CEST 2018] SEVERE: Task DB Connect: Try to ping database host: Failed with Exit Code: 2

Wenn ich das nun aus einem try-catch Block versuche, wird der SQL Stack Trace auf der Konsole (jTextArea) ausgegeben, aber keine Infos in das Log File geschrieben ???
Java:
DB db = new DB(jTAOutput, jLStatusDbConnect);
                Connection conn=db.dbConnect(connectString, dbUser, dbPwd);
                try {
                    conn.setAutoCommit(false);
                    logWriter.info("Task DB Connect: Try connect to: " + connectString + " as user: " + dbUser + " : Success!");
                    publish("Task DB Connect: Try connect to: " + connectString + " as user: " + dbUser + " : Success!");
                    //jLStatusDbConnect.setIcon(new ImageIcon(getClass().getClassLoader().getResource(iconOk)));
                }
                catch (SQLException ex) {
                    logWriter.severe(ex.getMessage());
                    jLStatusDbConnect.setIcon(new ImageIcon(getClass().getClassLoader().getResource(iconNotOk)));
                   
                    logWriter.severe("Task DB Connect: Try connect to: " + connectString + " as user: " + dbUser + " : Failed");
                    publish("Task DB Connect: Try connect to: " + connectString + " as user: " + dbUser + " : Failed");
                    String msg = String.valueOf(ex);
                    publish(msg);
                    jBTestDBconnect.setEnabled(true);
                    cancel(true);
                }
Die Ausgaben wenn es gut geht (try) werden in das Log File geschrieben:
Code:
[Mon Apr 30 18:16:47 CEST 2018] INFO: Task DB Connect: Try connect to: jdbc:oracle:thin:@192.168.56.37:1521/orclmac1 as user: hr
[Mon Apr 30 18:16:48 CEST 2018] INFO: Task DB Connect: Try connect to: jdbc:oracle:thin:@192.168.56.37:1521/orclmac1 as user: hr : Success!

Hat jemand eine Idee was ich hier falsch mache und die Log Einträge nicht geschrieben werden?

Danke im Voraus für Eure Hilfe!

Gruß

Ralf
 

mrBrown

Super-Moderator
Mitarbeiter
Ich sehe da keinen Grund, warum das nicht auch ins LogFile geschrieben werden sollte.

Wie sehen denn die properties aus?
 

ralfb1105

Bekanntes Mitglied
Hallo mrBrown,

genau so habe ich ich auch gedacht als ich gemerkt habe das bei einem Fehler beim DB connect keine Log Meldungen geschrieben werden. Heute Morgen ist mir dann eingefallen warum es nicht funktioniert, und wie immer war es natürlich ein Anfänger Fehler der vor dem Computer sitzt :confused:

Ich habe vergessen das der DB Connection Aufbau über die Klasse "DB" abgewickelt wird:
Java:
DB db = new DB(jTAOutput, jLStatusDbConnect);
                Connection conn=db.dbConnect(connectString, dbUser, dbPwd);
In dieser Klasse wird dann schon die SQL Exception geworfen wenn z.B. das DB User Password falsch ist:
Java:
public Connection dbConnect(String db_connect_string, String db_userid, String db_password)
        {
             try
             {
                        DriverManager.registerDriver(
                          new oracle.jdbc.OracleDriver());
                         
                        Connection conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
                        if (conn != null) {
                            //System.out.format("OK!\n");
                            //jLStatusDbConnect.setIcon(new ImageIcon(getClass().getClassLoader().getResource("oracle/OK25.png")));
                            return conn;
                        } else {
                            //System.out.format("FAILED TO CONNECT!\n\n");
                            return null;
                        }                       
                }
                catch (SQLException e)
                {
                        //System.out.format("FAILED TO CONNECT!\n\n");
                        logWriter.severe("DB connection clas: Failed to connect!");
                        logWriter.severe(e.getMessage());
                        jLStatusDbConnect.setIcon(new ImageIcon(getClass().getClassLoader().getResource("oracle/NotOK25.png")));
                        jTAOutput.append("DB connetion class: Failed to connect!");
                        String msg = String.valueOf(e);
                        jTAOutput.append(msg);
                        return null;
                }              
        }
In dieser Klasse hatte ich im catch() Zweig die Excpeption auf die "Console" (jTAOutput TextArea) ausgegeben, aber leider beim Implementieren vergessen auch in dieser Klasse den logWriter einzufügen ;)

Nachdem ich das jetzt wie oben gezeigt gemacht habe, wird nun auch die SQL Exception geloggt:
Code:
[Tue May 01 10:10:59 CEST 2018] INFO: Task DB Connect: Try connect to: jdbc:oracle:thin:@192.168.56.37:1521/orclmac1 as user: hr
[Tue May 01 10:11:01 CEST 2018] SEVERE: DB connection class: Failed to connect!
[Tue May 01 10:11:01 CEST 2018] SEVERE: ORA-01017: Benutzername/Kennwort ungültig; Anmeldung abgelehnt

Danke für Deine Meinung zu dem Problem!!

Gruß

Ralf
 

Anhänge

  • image.png
    image.png
    83 Bytes · Aufrufe: 62
Ähnliche Java Themen
  Titel Forum Antworten Datum
ralfb1105 Java LogManager property bestimmen/ausgeben Allgemeine Java-Themen 1
N Was sind Logger in Java? (bzgl. SonarLint) Allgemeine Java-Themen 3
I Alle logs von Logger bekommen Allgemeine Java-Themen 3
B Best Practice Start-Applikation mit Logger? Allgemeine Java-Themen 3
A Threads Log4J Logger wird "überschrieben" Allgemeine Java-Themen 3
S log4j, root logger logt nur FATAL? Allgemeine Java-Themen 9
B OOP java.util.logging.Logger: Wie kann ich mehre Klassen in ein Logfile schreiben lassen? Allgemeine Java-Themen 12
E Logger loggt nicht alle Level Allgemeine Java-Themen 2
S Java Logger Allgemeine Java-Themen 5
3 Logger teilweise ausschalten Allgemeine Java-Themen 7
S Anonymer Logger - kann man irgendwie eine komplexere Config hinkriegen? Allgemeine Java-Themen 6
D Logger mit verschiedenen Ausgabezielen Allgemeine Java-Themen 2
J Logger gibt nicht alle Level aus Allgemeine Java-Themen 3
F Logger in mehrere Dateien mit log4J Allgemeine Java-Themen 4
Q Unterschied der Logger Allgemeine Java-Themen 9
G Java Logger Allgemeine Java-Themen 2
hdi Logger - wie am schlausten? Allgemeine Java-Themen 14
G Java Logger ohne Stack Trace ausgaben. Allgemeine Java-Themen 2
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
H java.util.Logger Allgemeine Java-Themen 5
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
H Input/Output Wie schreibt man programmatisch Matrizen auf? Allgemeine Java-Themen 21
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
Aruetiise Methoden write() schreibt nicht alles Allgemeine Java-Themen 4
B Installer, der in die Win-Registry schreibt Allgemeine Java-Themen 10
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
L Filewriter schreibt Zahlen in Textdatei Allgemeine Java-Themen 2
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
M Für was schreibt man Unit-Tests? Allgemeine Java-Themen 55
J BufferedWriter schreibt von selbst ein "" Allgemeine Java-Themen 12
G wie schreibt man das? Allgemeine Java-Themen 16
Q Schnittstelle/Abstrakte Klasse schreibt Annotation vor? Allgemeine Java-Themen 4
W BufferedWriter.write() schreibt nicht Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben