Best Practice zum Löschen von Log-Files?

Status
Nicht offen für weitere Antworten.

Daniel_L

Bekanntes Mitglied
Hallo,

für meine Programme verwende ich einen Logger (diesen Standard-Logger, den NetBeans erzeugt, wenn man ein try/catch-Statement erzeugt). Dazu gibt es einen FileHandler, damit die Ereignisse auch gespeichert werden:

Code:
    public final static Logger zknlogger = Logger.getLogger(ZettelkastenView.class.getName()); 

        // init logger 
        FileHandler fh; 
        try { 
            fh = new FileHandler(System.getProperty("user.home") 
                   +java.io.File.separatorChar+".Zettelkasten" 
                   +java.io.File.separatorChar+"zknerror.log", true); 
            CConstants.zknlogger.addHandler(fh); 
            CConstants.zknlogger.setLevel(Level.ALL); 
            SimpleFormatter formatter = new SimpleFormatter(); 
            fh.setFormatter(formatter); 
        } 
        catch (IOException ex) {ex.printStackTrace();} 
        catch (SecurityException ex) {ex.printStackTrace();}

Der loggt auch wunderbar. Meine Frage ist: Werden die Log-Files irgendwann automatisch geleert? Da kann sich ja unter Umständen ganz schön was ansammeln, wenn man - wie ich in meinem Programm - auch andere Infos bei Bedarf mitloggt.

Oder was wäre die eleganteste/übliche Methode, das log-File "zurückzusetzen" bzw. zu leeren?
 

Ebenius

Top Contributor
Das kann man einstellen; zum Beispiel in den logging.properties (siehe "java.util.logging.FileHandler.limit" und "java.util.logging.FileHandler.count"). Ein Beispiel gibt's [post=491612]hier[/post]. Die logging.properties kann man entweder systemweit setzen oder beim Programmstart mitgeben: Details verrät dazu die :rtfm: API-Doc der LogManager-Klasse.

Ebenius
 

Daniel_L

Bekanntes Mitglied
So ganz versteh ich nicht, an welcher Stelle man wie die selbstgeschriebene Properties-Datei einbinden kann? Speicher ich die bspw. (unter NetBeans) im Resource-Verzeichnis, so dass sie beim Kompilieren mit in die Jar-Datei kann? Oder muss ich die properties-Datei als Parameter an die main()-Klasse übergeben?

Mir würde schon so etwas reichen wie "lösche bei jedem Programmstart erst mal die Log-Datei" oder so. :)

So wie ich das verstehe in der SUN-Dokumentation zum LogManager, wäre die eleganteste Methode, es über die Preference-Api zu setzen: These two properties may be set via the Preferences API, oder?
 

Ebenius

Top Contributor
Wenn Du die Properties per "java.util.logging.config.file" angibst, muss die Datei vom Dateisystem (nicht aus einem JAR) lesbar sein. Wenn Du die Datei so nicht verfügbar machen kannst/willst, sondern aus dem Classpath (einem JAR), von einer Webseite, etc. lesen willst, brauchst Du eine Config-Klasse die per "java.util.logging.config.class" registriert wird und im einfachsten Fall so aussehen kann: [HIGHLIGHT="Java"]public class LoggingConfigurerer {
// must have a visible default constructor
public LoggingConfigurer() {
try {
final ClassLoader cl = LoggingConfigurer.class.getClassLoader();
LogManager.getLogManager().readConfiguration(
cl.getResourceAsStream("logging.properties"));
} catch (Exception ex) {
throw new Error("Could not initialize Logging", ex);
}
}
}[/HIGHLIGHT]
Wie Du die Properties setzt ist egal; es soltle jedoch passieren, bevor der LogManager seine Konfiguration gelesen hat. Mit der Preferences-API hab ich leider bisher nicht gearbeitet, weil sich die Möglichkeit nie bot.

Beim Programmstart kannst Du die Config-Datei so angeben:
Code:
java <Liste Deiner VM Argumente> -Djava.util.logging.config.file=/path/to/logging.properties [Main-Klasse] [Programm-Argumente]
Die Config-Klasse kannst Du beim Programmstart so angeben:
Code:
java <Liste Deiner VM Argumente> -Djava.util.logging.config.class=mein.package.LogConfigurer [Main-Klasse] [Programm-Argumente]

Hinterher die Konfiguration neu zu laden ist schwierig, weil es leider einen Fehler gibt, wenn man LogManager.readConfiguration() nachträglich aufruft. Wenn man einen Logger namens "foo.bar", dieser Logger bereits initialisiert ist, aber kein Logger namens "foo" initialisiert ist, ignoriert LogManager.reset() (wird von readConfiguration() aufgerufen) diesen Logger. Bei Sun hatte ich damals keinen Bug-Report gefunden, aus Zeitdruck aber auch keinen abgegeben; aus meinen Quelldateien mit Workaround (leider IP der Firma in der ich arbeite) geht hervor, dass dieses Problem seit Einführung der LogManager-Klasse in JRE 1.4 bis mindestens JRE 1.5.0_07 bestand.

Ebenius
 
Zuletzt bearbeitet:

Daniel_L

Bekanntes Mitglied
Es gibt ja - für meine bescheidenen Zwecke - eine ganz einfache Lösung, habe ich herausgefunden. Und zwar einfach ein anderer Konstruktor des FileHandlers:
FileHandler

Man kann dort bereits angeben, wie viel LogFiles man möchte und welche Größe die jeweils haben sollen, und mit appendMode = false schreibt er das log-File auch für jede Session neu.
 

Ebenius

Top Contributor
Es gibt ja - für meine bescheidenen Zwecke - eine ganz einfache Lösung, habe ich herausgefunden. Und zwar einfach ein anderer Konstruktor des FileHandlers:
FileHandler

Man kann dort bereits angeben, wie viel LogFiles man möchte und welche Größe die jeweils haben sollen, und mit appendMode = false schreibt er das log-File auch für jede Session neu.
Das stimmt. Der FileHandler kann das schon alles, wie ich schon oben geschrieben habe. Die Frage ist ja nur, wie man die Konfiguration so macht, dass der FileHandler richtig an die Logger gepappt wird. :)

Ebenius
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Best Practice überprüfen von Übergabeparametern Allgemeine Java-Themen 17
S best practice: Einordnung Enitity und Datenklasse Allgemeine Java-Themen 11
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
F best practice Allgemeine Java-Themen 5
J Input/Output Dateien bearbeiten - "Best Practice" Allgemeine Java-Themen 3
R Statische Klasse: Best practice mit flags (2) Allgemeine Java-Themen 3
musiKk Best Practice für kleine Variationen in gegebenen Modellklassen Allgemeine Java-Themen 11
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Ameise03 Best&Worst Case bei Insertionsort Allgemeine Java-Themen 10
S Best Practices CopyConstrutor mit ArrayList Allgemeine Java-Themen 1
F Error Logging - best practices? Allgemeine Java-Themen 3
M Best Practices für Undo/Redo Allgemeine Java-Themen 16
G Best Practices Software-Engineering‏ Allgemeine Java-Themen 3
G Best Practices Allgemeine Java-Themen 10
M Best Practices Exception Handling für eigene library Allgemeine Java-Themen 8
S best practise Allgemeine Java-Themen 6
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
M Best Match / Best Fit auf Strings Allgemeine Java-Themen 9
M löschen in Rot Schwarz Bäumen Allgemeine Java-Themen 6
M lineare Sondierung löschen Allgemeine Java-Themen 2
A Sicheres Löschen von Dateien Allgemeine Java-Themen 7
E Varialbe komplett Löschen Allgemeine Java-Themen 26
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
J ArrayList, ganze Zeilen löschen oder überspringen Allgemeine Java-Themen 4
glamdring273 Discord JDA, Kanal löschen Allgemeine Java-Themen 0
G Java Editor Löschen doppelter Zahlen einer Liste Allgemeine Java-Themen 2
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
P Erste Schritte Dateien löschen Allgemeine Java-Themen 4
S Einzigartigen String in Datenbank finden und löschen Allgemeine Java-Themen 23
J Datei löschen, die Leerzeichen im Pfad hat Allgemeine Java-Themen 5
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
A Referenzen von Bildobjekten löschen Allgemeine Java-Themen 0
I PDF freigeben zum löschen Allgemeine Java-Themen 4
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
P JDK installieren Kann man die Ordner in C:\Users\*\AppData\LocalLow\Sun\Java\.... löschen? Allgemeine Java-Themen 3
X Löschen von einer Zeile in einer Text Datei. Klappt nicht. Allgemeine Java-Themen 4
J Java - Zeile aus Text datei löschen Allgemeine Java-Themen 13
W Arraylist Text Suchen und Datei löschen Allgemeine Java-Themen 5
G Datei löschen Allgemeine Java-Themen 8
R LinkedList und Threads: Strukturprobleme bez. löschen von Elementen Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
L Doppelte eintraege im Stringbuffer löschen Allgemeine Java-Themen 4
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
M lucene suchen/löschen/hinzufügen Allgemeine Java-Themen 4
R Leere Verzeichnisse löschen Allgemeine Java-Themen 11
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4
M Batch zum Java Cache löschen Allgemeine Java-Themen 3
R Löschen von Files nicht möglich Allgemeine Java-Themen 11
KrokoDiehl Verzeichnisse via FileVisitor löschen Allgemeine Java-Themen 3
V Objekt löschen Allgemeine Java-Themen 7
127.0.0.1 StringBuffer leere Zeile löschen Allgemeine Java-Themen 8
J char-Array löschen Allgemeine Java-Themen 5
W n:m Beziehung Referenzen löschen Allgemeine Java-Themen 5
127.0.0.1 Zeilen in .txt Datei löschen Allgemeine Java-Themen 11
D Löschen-Methode im Stapelverarbeitungsprogramm Allgemeine Java-Themen 4
S JTable und Spalten löschen Frage Allgemeine Java-Themen 5
EnHancEd[] ArrayList gezielt löschen Allgemeine Java-Themen 9
S Nullen aus Array löschen Allgemeine Java-Themen 10
N Java lässt sich nicht löschen! Allgemeine Java-Themen 7
U Wie kann mit einen Java Applet Dateien erstellen,verschieben und löschen? Allgemeine Java-Themen 9
P Input/Output Ordner löschen --> geht nicht Datei --> Ja Allgemeine Java-Themen 6
K Leerzeiilen aus ArrayList löschen?! Allgemeine Java-Themen 7
M Objekt aus Liste in Liste suchen/löschen Allgemeine Java-Themen 6
S Singleton Instanz löschen Allgemeine Java-Themen 5
Z Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea Allgemeine Java-Themen 5
K Java Feld Duplikate löschen Allgemeine Java-Themen 5
F SAXBuilder blockiert löschen von Dateien Allgemeine Java-Themen 2
L Datei sicher löschen/mehrfach überschreiben? Allgemeine Java-Themen 2
S Java komplett löschen und neu installieren Allgemeine Java-Themen 4
N Java geht nicht mehr zu löschen Allgemeine Java-Themen 5
E Regex alles nach ? löschen Allgemeine Java-Themen 4
I Über eine Liste iterieren und Objekte löschen. Wie löst man das sauber? Allgemeine Java-Themen 5
W 2D-Grafik nach getthumbnail läst sich Quellbild nicht mehr löschen Allgemeine Java-Themen 3
E Regex HTML Tag und Inhalt löschen Allgemeine Java-Themen 4
S Zeilen in einer Datei löschen Allgemeine Java-Themen 3
Z aus private List<???> list eintrag löschen Allgemeine Java-Themen 4
C Zeile aus einer CSV-Datei löschen Allgemeine Java-Themen 3
J Element aus HashSet löschen Allgemeine Java-Themen 2
S Element aus ArrayListe löschen --> Thread hängt sich auf Allgemeine Java-Themen 2
A LinkedList Auslesen und Objekt Löschen Allgemeine Java-Themen 4
G Mit Batch-Datei verzeichnisse löschen Allgemeine Java-Themen 9
K von List getSelected auf ResultSet Datenbank löschen Allgemeine Java-Themen 2
S Reihen aus einem 2-dim. Array 'löschen' Allgemeine Java-Themen 2
K Threading - schreiben auf Hashmap/löschen - ConcurrentModificationException Allgemeine Java-Themen 3
A Zeilen aus einer Textdatei löschen Allgemeine Java-Themen 6
M Arraylist - Inhalte in Textferldern anzeigen, verändern und löschen. Allgemeine Java-Themen 18
S Liste Object Löschen Allgemeine Java-Themen 7
G Log4J - Logs älter als 3 Tage löschen Allgemeine Java-Themen 5
Quaxli Files massenhaft löschen Allgemeine Java-Themen 3
J Mit POI Zeile in Excel löschen Allgemeine Java-Themen 5
D Kann Tiff Datei nicht löschen Allgemeine Java-Themen 12
0x7F800000 Regex zum löschen vom unnötigen whitespace Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben