# Log4J: Bei Programmstart immer eine neue LogDatei erzeugen



## TobiWanKenobi (8. Dez 2008)

Hallo zusammen,
wie kann ich es realisieren das ich mit jedem neuen Programmstart eine neue LogDatei erzeuge?
Ab einer bestimmten Anzahl an Dateien, sollen dann alte überschrieben werden.

Finde leider nichts dazu, bzw nicht den richtigen Appender.

Viele Grüße,
Tobi


----------



## SlaterB (8. Dez 2008)

vielleicht hilft mein kurzer Blick bei google weiter,
http://newsgroups.derkeiler.com/Archive/De/de.comp.lang.java/2005-11/msg00160.html


----------



## TobiWanKenobi (8. Dez 2008)

Danke das  hat etwas geholfen.
Allerdings wird hier ja erst eine neue Datei erzeugt wenn die alten eine bestimmte Größe überschritten hat. 
Ich hätte es aber gerne so das bei jedem neuen Start eine neue Datei erzeugt wird.

Hmm....

Noch jemand ne Idee?

edit: Er schreibt auch brav eine neue Datei sobald die aktuelle die max Größe erreicht hat, allerdings setzt er die laufende nummer ans ender des File Namen: also aus "blabla.log" wird irgendwann "blabla.log.1" dann "blabla.log.2" usw. 
Wie kann ich ihm das abgewöhnen? Also das er "blabla1.log" daraus macht?


----------



## FArt (8. Dez 2008)

Vergleiche FileAppender <-> RollingFileAppender
Betrachte das Attribut "append".
Nutze Google und die Doku und nicht nur den hier vorgeschlagenen Link.


----------



## TobiWanKenobi (8. Dez 2008)

Humm, also ich nutze Google und die Doku.

Aber leider klappt es trotzdem nicht.
Der RollingFileAppender sollte ja shcon das richtige sein. 
Append sollte dann auf false stehen, damit er nicht immer an das logFile anfügt, sondern in ein neues logFile schreibt.
Klappt auch, nur das er kein neues File schreibt, sondern das alte überschreibt.

edit: Da mir die ZEit davon läuft belasse ich es dabei das erste ein neues LogFile erzeugt wird wenn die max Größe erreicht ist. 

Vll kann mir jemand bei der Frage helfen bzgl. der automatischen Bennennung der Dateien.


----------



## FArt (8. Dez 2008)

Bei jedem neuen Programmstart eine neue Datei habe ich überlesen.. und dann noch überrollen...

... ich glaube da gibt es nichts fertiges. Du kannst aber von RollingFileAppender eine eigene Implementierung ableiten, das ist relativ trivial.

Dort kannst du dann nach deinem Muster Dateinamen generieren und dann überrollen lassen.

Es gibt jedoch eine berechtigte Frage: was macht das für einen Sinn? Es werden dir immer Logmeldungen verloren gehen (durch überrollen) und trotzdem muss das Logverzeichnis überwacht werden, denn es besteht die Gefahr, dass dir die Platte voll läuft (durch immer neue Logdateien, die nur für sich überrollen). Das ist also die Kombination der schlechten Eigenschaften bestehender Appender.


----------



## TobiWanKenobi (8. Dez 2008)

Ja ich hatte da auch noch mal drüber nachgedacht und im Grunde ist es so schon ganz gut das nicht jedes mal ein neues LogFile geschrieben wird.

Und um das mit dem Namen der Files in den Griff zu bekommen, muss ich eine eigene Implementierung ableiten von RollingFileAppender. Oder hab ich das falsch verstanden`?


----------



## FArt (8. Dez 2008)

Nur wenn dir die Möglichkeiten der Konfiguration nicht genügen.

Log4J kann auch Properties im Stil ${property} dynamisch zur Laufzeit auswerten und eintragen, z.B.


```
<param name="File" value="${mydir}/${property}_server.log"/>
```


----------



## TobiWanKenobi (9. Dez 2008)

Aber das Hilft mir ja auch nicht weiter denn er setzt die laufenden Nummern doch immer ans Ende.

Hmm komisch da muss es doch auch vielen anderen so gegangen sein das es sie stört wen die Dateiendung immer so verändert wird...


----------



## maki (9. Dez 2008)

http://www.java-forum.org/de/topic78843_log4j-dailyrollingfileappender.html


----------

