# Alte Log Files löschen mit log4j



## jupa (26. Jan 2008)

Ich suche eine Möglichkeit ältere Logdateien automatisch zu bereinigen.

Ich benutze die Klassen von Logj und den DailyRollingFileAppender um die Loggs zu ertsellen.

Weis jemand ob dwas und wie das möglich ist.

MFG

jupa


----------



## xhi2018 (11. Mrz 2009)

Hallo,

die selbe Problemstellung hatte ich auch. 
Mit dem DailyRollingFileAppender von log4j ist das soweit ich es verstehe wohl nicht möglich. Eine Möglichkeit hab ich aber mit RollingFileAppender gefunden.  :rtfm:

Mit dieser Konfiguration tut es so wie von mir gewünscht, leider haben die Backup Logfiles nun keinen Zeitstempel im Dateinamen.
	
	
	
	





```
#
log4j.rootLogger=INFO, Console, LogFile
...
log4j.appender.LogFile=org.apache.log4j.RollingFileAppender
log4j.appender.LogFile.File=<verzeichnis & Dateiname zum Logfile>
# Control the maximum log file size
log4j.appender.LogFile.MaxFileSize=2KB
# Keep backup file(s) (backups will be in filename.1, .2 etc.)
log4j.appender.LogFile.MaxBackupIndex=1
...
```
In meinem Fall kann ich aber damit leben ... 
Gruß


----------



## Saxony (31. Mrz 2009)

Hiho,

das Problem habe ich auch gerade! Ich baue mir deshalb gerade meinen eigenen Appender, welcher DailyRollingAppender und RollingFileAppender mixt. Zur Zeit bin ich soweit, dass ich das Verhalten eines RollingFileAppenders habe, aber ohne MaxBackupIndex, sondern mit Zeitstempel im Dateinamen bei erreichen der maxFileSize.

Nunja nun muss ich noch das Dategeraffel reinbasteln. 

Das hier gewünschte Verhalten mit der Löschung von LogFiles, welche x Tage alt sind, ist auch Teil meiner Implementierung. Dort müsste es dann mit in die rollOver Methode mit rein - mal schauen.

bye Saxony


----------



## Saxony (31. Mrz 2009)

So nun klappt der Mix aus FileSize und Zeit.

Ist die FileSize erreicht wird ein rollOver durchgeführt, obwohl die Zeit noch nicht abgelaufen ist.
Ist die Zeit erreicht wird ein rollOver durchgeführt, obwohl die FileSize noch nicht erreicht ist.

Auch habe ich das Durchnummerieren des RollingFileAppenders durch das des DateRollingAppenders mit SimpleDateFormat ersetzt. Dadurch fiel auch die Begrenzung der Backup Files (maxBackupIndex) raus und es werden nun beliebig viele BackupFiles angelegt.

Fehlen noch zwei Sachen:

1. Alle LogFiles älter als x Minuten/Stunden/Tage löschen
2. Wenn die Platte zu 95% voll ist, soll als letzte Meldung "disk full" geloggt werden und dann das Logging abbrechen.

In wie weit die beiden letzten Dinge etwas in einem Appender verloren haben - vor allem im Bezug auf die Performance - muss ich dann mal sehen. Soll es nämlich im Appender bleiben muss bei jedem (!) log ja irgendwie überprüft werden, ob so ein Fall schon eigetreten ist. Naja schau mer mal! 

bye Saxony


----------

