Hallo liebe community!
Ich habe ein etwas größeres Programm geschrieben das 19 (derzeit) Objekte verwaltet (Files sortieren und verschieben, Kontrollmechanismen zum Filtern von Dateien) Im Leerlauf, also wenn keine Dateien für die einzelnen Objekte zum einsortieren sind, braucht das Programm ohne Logging Funktion max. 1 Min zum terminieren. Mit der Logging funktion, wo in den verschiedenen Klassen an verschiedenen Stellen, die statische write Funktion meiner LoggerKlasse aufgerufen wird, braucht das Programm im Leerlauf an die 6 Minuten.
Jetzt habe ich mir gedacht, ich sammle alle Logs eines Objektes in der LoggerKlasse und wenn ein Objekt abgearbeitet wurde, sage ich einfach flush und close (Objekte werden nacheinander abgearbeitet). Naja um mein Problem näher beschreiben zu können poste ich einfach mal die paar Zeilen Code die meine Logger-Klasse ausmachen.
Wie ihr seht, habe ich zu jeder Logmessage die an den Logger geschickt wird einen sekundengenauen Zeitstempel. Das würde beim Bündeln so abhanden kommen. Wie kann ich das am gescheitesten machen? Würde das überhaupt etwas ausmachen? Ich würde gerne wissen, wo beim FileWriter soviel Zeitaufwand aufkommt.
Danke jedenfalls fürs lesen, noch mehr Dank wenn ihr darüber nachdenkt und mir hilfreiche Gedankenanstöße gebt!
Ich habe ein etwas größeres Programm geschrieben das 19 (derzeit) Objekte verwaltet (Files sortieren und verschieben, Kontrollmechanismen zum Filtern von Dateien) Im Leerlauf, also wenn keine Dateien für die einzelnen Objekte zum einsortieren sind, braucht das Programm ohne Logging Funktion max. 1 Min zum terminieren. Mit der Logging funktion, wo in den verschiedenen Klassen an verschiedenen Stellen, die statische write Funktion meiner LoggerKlasse aufgerufen wird, braucht das Programm im Leerlauf an die 6 Minuten.
Jetzt habe ich mir gedacht, ich sammle alle Logs eines Objektes in der LoggerKlasse und wenn ein Objekt abgearbeitet wurde, sage ich einfach flush und close (Objekte werden nacheinander abgearbeitet). Naja um mein Problem näher beschreiben zu können poste ich einfach mal die paar Zeilen Code die meine Logger-Klasse ausmachen.
Java:
public class MsgLog {
protected static String defaultLogFile = "msglog.txt";
public static void write(String s){
try {
write(defaultLogFile, s);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void write(String f, String s) throws IOException {
TimeZone tz = TimeZone.getTimeZone("CET");
Date now = new Date();
DateFormat df = new SimpleDateFormat ("dd.MM.yyyy HH:mm:ss ");
df.setTimeZone(tz);
String currentTime = df.format(now);
FileWriter aWriter = new FileWriter(f, true);
aWriter.write(currentTime + " " + s + "\n");
aWriter.flush();
aWriter.close();
}
}
Wie ihr seht, habe ich zu jeder Logmessage die an den Logger geschickt wird einen sekundengenauen Zeitstempel. Das würde beim Bündeln so abhanden kommen. Wie kann ich das am gescheitesten machen? Würde das überhaupt etwas ausmachen? Ich würde gerne wissen, wo beim FileWriter soviel Zeitaufwand aufkommt.
Danke jedenfalls fürs lesen, noch mehr Dank wenn ihr darüber nachdenkt und mir hilfreiche Gedankenanstöße gebt!