Guten Morgen zusammen, ich habe folgenden Code aus dem Internet genommen und etwas modifiziert.
Die Funktionalität ist gegeben, dass der Fehler in einer HTML Datei geschrieben wird. Leider wird die Log-Datei bei jedem Fehler neu beschrieben und somit sind die alten Logs weg.
Meine Frage ist folgende: Wie erreiche ich es, dass die Datei erhalten bleibt und nur durch neue Einträge ergänz wird. Links sind willkommen, Vorschläge und Codebeispiele oder einfach Erläuterungen sind alles ok.
Hier mein Code:
und...
Ich bedanke mich schon einmal im voraus
Die Funktionalität ist gegeben, dass der Fehler in einer HTML Datei geschrieben wird. Leider wird die Log-Datei bei jedem Fehler neu beschrieben und somit sind die alten Logs weg.
Meine Frage ist folgende: Wie erreiche ich es, dass die Datei erhalten bleibt und nur durch neue Einträge ergänz wird. Links sind willkommen, Vorschläge und Codebeispiele oder einfach Erläuterungen sind alles ok.
Hier mein Code:
Java:
public class DatenLogging {
/* Sollte die Datenbank einmal nicht erreichbar sein,
* können auftretende Fehler in der Datenbank nicht
* geloggt werden. Dazu wird alternativ eine Datei erzeugt,
* in der Datenbankausfälle geloggt werden.
*/
public static Logger logger = Logger.getLogger(DatenLogging.class.getName());
public static int lineNumber=0;
public static String methodName = "";
public static String className = "";
public static String message = "";
public DatenLogging() {
FileHandler fh = null;
try {
fh = new FileHandler("db_log.html");
} catch (SecurityException | IOException e) {
e.printStackTrace();
}
//fh.setFormatter(new LogFormatter());
logger.addHandler(fh);
}
public static void LogDetails(Exception e) {
e.printStackTrace();
System.out.println("-----------------");
System.out.println("-----------------");
lineNumber = e.getStackTrace()[0].getLineNumber();
methodName = e.getStackTrace()[0].getMethodName();
className = e.getStackTrace()[0].getClassName();
message = e.getMessage();
//String hinweis = e.getCause().toString();
logger.logrb(Level.WARNING, className, methodName, ""+lineNumber, message, e.getCause());
System.out.println("Zeile: " + lineNumber);
System.out.println("Methode: " + methodName);
System.out.println("Klasse: " + className);
System.out.println("Meldung " + message);
//System.out.println("Hinweis: " + hinweis);
}
}
und...
Java:
class HTMLFormatter extends java.util.logging.Formatter {
public String format(LogRecord record) {
return ("<tr><td>" + (new Date(record.getMillis())).toString() + "</td><td>"
+ record.getMessage() + "</td></tr>\n");
}
public String getHead(Handler h) {
return ("<html>\n <body>\n" + "<Table border>\n<tr><td>Time</td><td>Log Message</td></tr>\n");
}
public String getTail(Handler h) {
return ("</table>\n</body>\n</html>");
}
}
public class LoggingHTMLFormatter {
public static void main(String args[]) throws Exception {
LogManager lm = LogManager.getLogManager();
Logger parentLogger, childLogger;
FileHandler xml_handler = new FileHandler("log_output.xml");
FileHandler html_handler = new FileHandler("log_output.html");
parentLogger = Logger.getLogger("ParentLogger");
childLogger = Logger.getLogger("ParentLogger.ChildLogger");
lm.addLogger(parentLogger);
lm.addLogger(childLogger);
parentLogger.setLevel(Level.WARNING);
childLogger.setLevel(Level.ALL);
xml_handler.setFormatter(new XMLFormatter());
html_handler.setFormatter(new HTMLFormatter());
parentLogger.addHandler(xml_handler);
childLogger.addHandler(html_handler);
childLogger.log(Level.FINE, "This is a fine log message");
childLogger.log(Level.SEVERE, "This is a severe log message");
xml_handler.close();
html_handler.close();
}
}
Ich bedanke mich schon einmal im voraus