Guten Morgen zusammen, ssry wegen dem wenig aussagekraftigen Titels^^ ich wusste nicht wie ich mein Problem in einem Titel fassen sollte ohne dass er lang wird.
Also mein Problem ist nur ein Schönheitsfehler aber auf die Dauer etwas nervig.
Ich rufe in der Main folgenden Code auf:
in meiner HTMLTableFormatter Classe liegt eine HTML Tabelle drinne die ich dort erstelle. (Code folgt nach meiner Beschreibung) in dieser HTML Tabelle trage ich dann alle meine Fehler ein, die während der Programmausführung anfallen. Das funktioniert auch wunderbar. Leider wird Pro Programmstart eine neue Tabelle an die Alte drangehängt selbst wenn keine Fehler auftraten. Heißt es wird der TabellenHeader angelegt und sonst nichts. Das wird dan nauf die Dauer leider etwas unübersichtlich. Daher würde ich das gerne so machen, dass wenn keine Fehler aufgetreten sind nur ein String ausgegeben wird. Sowas wie beim Ausführen des Programm ist kein Fehler aufgetreten und da vllt no hdas Datum reinpacken wann es ausgeführt wurde. Das bekomm ich aber selbst hin. Was ich nicht hinbekomme ist, das zu prüfen ob ein Fehler angefallen ist.
Noch als Info, wenn irgendwo ein Fehler auftritt, dann spring ich in nen Catch Block und mache folgendes:
So und wie oben angekündigt noch der Code für meinen Formatter:
Ich hoffe ich konnte mein "Problem" verständlich schildern und Ihr könnt mir einmal mehr weiterhelfen
Danke
gruß Mario
Also mein Problem ist nur ein Schönheitsfehler aber auf die Dauer etwas nervig.
Ich rufe in der Main folgenden Code auf:
Java:
public static void main(String[] args)
{
//String para = args[0].toString();
String para = "G:";
Software fenster = new Software(para){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}};
FileHandler fh = null;
try
{
fh = new FileHandler(para + "\\" + "P8008-Software_LOG.html", true);
}
catch (SecurityException | IOException e1)
{
sourceLineNumber = 0;
sourceLineNumber = e1.getStackTrace()[3].getLineNumber();
sourceMethodName = e1.getStackTrace()[3].getMethodName();
sourceClassName = e1.getStackTrace()[3].getClassName();
logger.logp(Level.SEVERE, sourceClassName, sourceMethodName, "", e1);
}
Formatter formatter = new HTMLTableFormatter();
fh.setFormatter(formatter);
logger.addHandler(fh);
}
in meiner HTMLTableFormatter Classe liegt eine HTML Tabelle drinne die ich dort erstelle. (Code folgt nach meiner Beschreibung) in dieser HTML Tabelle trage ich dann alle meine Fehler ein, die während der Programmausführung anfallen. Das funktioniert auch wunderbar. Leider wird Pro Programmstart eine neue Tabelle an die Alte drangehängt selbst wenn keine Fehler auftraten. Heißt es wird der TabellenHeader angelegt und sonst nichts. Das wird dan nauf die Dauer leider etwas unübersichtlich. Daher würde ich das gerne so machen, dass wenn keine Fehler aufgetreten sind nur ein String ausgegeben wird. Sowas wie beim Ausführen des Programm ist kein Fehler aufgetreten und da vllt no hdas Datum reinpacken wann es ausgeführt wurde. Das bekomm ich aber selbst hin. Was ich nicht hinbekomme ist, das zu prüfen ob ein Fehler angefallen ist.
Noch als Info, wenn irgendwo ein Fehler auftritt, dann spring ich in nen Catch Block und mache folgendes:
Java:
....
} catch (IOException ex) {
sourceLineNumber = 0;
sourceLineNumber = ex.getStackTrace()[3].getLineNumber();
sourceMethodName = ex.getStackTrace()[3].getMethodName();
sourceClassName = ex.getStackTrace()[3].getClassName();
logger.logp(Level.SEVERE, sourceClassName, sourceMethodName, "Beim hinzufügen der Daten hat es ein Problem gegeben", ex);
break;
}
....
So und wie oben angekündigt noch der Code für meinen Formatter:
Java:
public class HTMLTableFormatter extends Formatter {
Software software;
private static final DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
private static final DateFormat tf = new SimpleDateFormat("HH:mm:ss");
public HTMLTableFormatter() {
}
public synchronized String format(LogRecord record) {
StringBuffer buf = new StringBuffer(1000);
if (record.getLevel().intValue() >= Level.WARNING.intValue())
{
buf.append(" <tr><td>").append(tf.format(new Date(record.getMillis()))).append("</td>");
buf.append("<td align=\"center\">").append(record.getLevel()).append("</td>");
if(Software.getSourceClassName() != null)
{
buf.append("<td>").append(Software.getSourceClassName().substring(Software.getSourceClassName().indexOf(".")+1, Software.getSourceClassName().indexOf("$"))).append("</td>");
}
else
{
buf.append("<td>").append(record.getSourceClassName()).append("</td>");
}
if(Software.getSourceMethodName() != null)
{
buf.append("<td>").append(Software.getSourceMethodName()).append("</td>");
}
else
{
buf.append("<td>").append(record.getSourceMethodName()).append("</td>");
}
if(Software.getSourceLineNumber() != 0)
{
buf.append("<td align=\"center\">").append(Software.getSourceLineNumber()).append("</td>");
}
else
{
buf.append("<td align=\"center\">").append("Keine").append("</td>");
}
buf.append("<td>").append(record.getMessage()).append("</td>");
if(record.getThrown() == null)
{
buf.append("<td>").append("Keine Fehlermeldung!").append("</td></tr>\n");
}
else
{
buf.append("<td>").append(record.getThrown()).append("</td></tr>\n");
}
}
return buf.toString();
}
@Override
public String getHead(Handler h) {
return ("<html><head><b><u><font color=\"#FF0000\">P8008-Auswertungssoftware Logging Report vom " + df.format(new Date().getTime()) + "</font></b></u></head><body><pre><table border>\n "
+ "<tr><th align=\"center\">Uhrzeit</th>"
+ "<th align=\"center\">Level</th>"
+ "<th align=\"center\">Klasse</th>"
+ "<th align=\"center\">Methode</th>"
+ "<th align=\"center\">Codezeile</th>"
+ "<th align=\"center\">Hinweis</th>"
+ "<th align=\"center\">Fehlermeldung</th></tr>\n");
}
@Override
public String getTail(Handler h) {
return "</table></pre></body><br><br></html>\n";
}
}
Ich hoffe ich konnte mein "Problem" verständlich schildern und Ihr könnt mir einmal mehr weiterhelfen
Danke
gruß Mario