Volevo salvare le eccezioni di un mio programma in java su un file di testo utilizzando il package util.logging del java
codice:
public static Logger getLogger(Object myClass) {
Logger logger = null;
try {
// Create an appending file handler
boolean append = true;
//Create a file handler with a limit of 2 megabytes
int limit = 2000000; // 2 Mb
FileHandler handler = new FileHandler(log_abs_path, limit, 1, append);
// Add to the desired logger
logger = Logger.getLogger(myClass.getClass().getName());
logger.addHandler(handler);
} catch (IOException e) {
e.printStackTrace();
}
return logger;
}
Il codice riportato viene funziona correttamente, però il file di log lo scrive in formato HTML, di seguito un esempio:
codice:
<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
<date>2005-09-27T17:04:34</date>
<millis>1127833474605</millis>
<sequence>0</sequence>
<logger>it.siai.listener.SiaiFrameListener</logger>
<level>SEVERE</level>
<class>it.siai.listener.SiaiFrameListener</class>
<method>connectionToDatabase</method>
<thread>10</thread>
<message>Driver hsql del database non trovato, impossibile avviare il programma</message>
<exception>
<message>java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver</message>
<frame>
<class>java.net.URLClassLoader$1</class>
<method>run</method>
</frame>
<frame>
<class>java.security.AccessController</class>
<method>doPrivileged</method>
</frame>
<frame>
<class>java.net.URLClassLoader</class>
<method>findClass</method>
</frame>
<frame>
<class>java.lang.ClassLoader</class>
<method>loadClass</method>
</frame>
<frame>
<class>sun.misc.Launcher$AppClassLoader</class>
<method>loadClass</method>
</frame>
ecc...
io invece lo forrei scritto in txt semplice nel seguente modo:
codice:
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at it.siai.extra.DatabaseSiai.openConnectionToDatabase(DatabaseSiai.java:347)
at it.siai.listener.SiaiFrameListener.connectionToDatabase(SiaiFrameListener.java:84)
at it.siai.listener.SiaiFrameListener.<init>(SiaiFrameListener.java:60)
at it.siai.main.Siai.createAndShowGUI(Siai.java:66)
at it.siai.main.Siai.access$1(Siai.java:56)
at it.siai.main.Siai$1.run(Siai.java:75)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
Come faccio?