G
Gast2
Gast
Hallo folgendes Problem:
Ich habe in meiner Software ein Loggingsystem, welches unter anderem den FileHandler verwendet. Dieser ist so konfiguriert, dass er rotierend 10 Logfiles ins APPDATA des Systems schreibt:
Bei jedem Startup werden aus dem Verzeichnnis alle ungültigen Dateien gelöscht:
Mein Problem ist nun folgendes:
Immer wenn eine zweite (oder xte) Instanz der Applikation erstellt wird, erstell der FileHandler nicht die Logfile mit nächst höheren Nummer sondern eine File:
anstatt:
Der Grund ist mir auch klar, da die *.log.1 ja noch von der vorgehenden Instanz geöffnet ist. Diese files werden aber natürlich nicht gecleaned, da sie valid sind. Sollen ja auch da bleiben für den Fall das man sie braucht.
Allerdings werden diese nunmal nicht zyklisch überschrieben, da sie ja nur entstehen, wenn mehrere instanzen gleichzeitig aktiv sind. (Was auch so sein soll/kann!).
Kann man das irgendwie unterbinden oder anders konfigurieren?
Ich habe in meiner Software ein Loggingsystem, welches unter anderem den FileHandler verwendet. Dieser ist so konfiguriert, dass er rotierend 10 Logfiles ins APPDATA des Systems schreibt:
Java:
logger = Logger.getLogger(getClass().getName());
try {
logfileHandler = new FileHandler(logfilePath + LOGFILE, MAX_LOGFILE_SIZE, 10);
final SimpleFormatter formatter = new SimpleFormatter();
logfileHandler.setFormatter(formatter);
logger.addHandler(logfileHandler);
logger.setLevel(Level.ALL);
logger.log(Level.INFO, "logfile created " + TimeString.get());
} catch (final Exception ex) {
logger.log(Level.SEVERE, "Cannot create file stream for logging!", ex);
}
Bei jedem Startup werden aus dem Verzeichnnis alle ungültigen Dateien gelöscht:
Java:
final File f = new File(logfilePath);
final File[] fileArray = f.listFiles();
for (final File file : fileArray) {
if (!file.getName().startsWith(LOGFILE)) {
//Files ist eine Utilitiy KLasse von unserer Firma, welche rekursives löschen unterstützt
Files.delete(file);
}
}
Mein Problem ist nun folgendes:
Immer wenn eine zweite (oder xte) Instanz der Applikation erstellt wird, erstell der FileHandler nicht die Logfile mit nächst höheren Nummer sondern eine File:
Code:
LOGFILE_NAME.log.1.0
anstatt:
Code:
LOGFILE_NAME.log.2
Der Grund ist mir auch klar, da die *.log.1 ja noch von der vorgehenden Instanz geöffnet ist. Diese files werden aber natürlich nicht gecleaned, da sie valid sind. Sollen ja auch da bleiben für den Fall das man sie braucht.
Allerdings werden diese nunmal nicht zyklisch überschrieben, da sie ja nur entstehen, wenn mehrere instanzen gleichzeitig aktiv sind. (Was auch so sein soll/kann!).
Kann man das irgendwie unterbinden oder anders konfigurieren?