# Logfiles weiterführen



## kirina (28. März 2008)

Wie kann ich einen Logfile den ich schreibe weiterführen und nicht immer überschreiben?

Ich hab folgenden Code:


```
import java.util.logging.ConsoleHandler;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class log_tester {
	private static final Logger log = Logger.getLogger(log_tester.class
			.getName());
	private static ConsoleHandler coh = new ConsoleHandler();
	private static FileHandler fh;
	private static SimpleFormatter sf;

	public static void main(String[] args) throws Exception{
		sf = new SimpleFormatter();
		fh = new FileHandler("C:/log_test.txt");
		fh.setFormatter(sf);
		log.setLevel(Level.FINE);
		coh.setLevel(Level.FINE);
		log.addHandler(coh);
		log.addHandler(fh);
		log.log(Level.FINE, "Start");
		int i = 0;
		if (i==0){
			log.warning("ACHTUNG 0");
		} else {
			log.info("ach ne");
		}
	}
}
```


 es funktioniert so weit auch, wenn ich das log_test.txt öffne kann ich den log lesen.

Mein Problem ist nur, starte ich das "programm" immer wieder, erscheint immer nur der letzte log. Aber ich möchte natürlich in meinem Logfile alles nacheinander aufgereiht haben was so passiert.

Wie mache ich das? Ich hab bis jetzt leider einfach nichts gefunden


----------



## zeja (28. März 2008)

Nichts gefunden? Steht doch inner Doku: http://java.sun.com/javase/6/docs/api/java/util/logging/FileHandler.html


----------



## kirina (28. März 2008)

Mmh, ja daran hing ich^^ (ich hab mich wohl falsch ausgedrückt, ich hab nichts gefunden wie ich es sagen wir mal "umsetzen" soll, aber ich äußere mal am besten meine Vermutung ) und sorry, ich muss wohl noch lernen mal meine Frage besser zu stellen oder so =/ :-(

also ich hab natürlich gesehen es gibt noch mehr Konstruktor (FileHandler(String pattern, int limit, int count) , FileHandler(String pattern, int limit, int count, boolean append) ) aber ich komm mit der Erklärung nicht zurecht.

also ich versucht mal hinzuschreiben was ich glaube verstanden zu haben, und vieleicht hab ich es ja schon lange und bin nur zu blöd da zu merken^^

limit ist wie groß die datei werden darf, das kann ich mir noch vorstellen

count macht mir da schon mehr probleme (java.util.logging.FileHandler.count specifies how many output files to cycle through (defaults to 1). )... ich will ja nur 1 file mit allem drin stehen haben und nicht das er das gleich in mehrere reinschreibt so hab ich das jedenfalls bis jetzt verstanden....obwohl mir kommt grad noch ne zweite idee...ist das vieleicht sogar wie oft er in die datei reinschreiben soll? also wieviele "logs" er  anfügen sollaber angenommen ich schreib da 5 rein, was passiert dann wenn ich 5 voll hab ? löscht er dann? oder löscht er den ältesten? mmh naja das krieg ich wohl am besten durch ausprobieren (falls der gedanke stimmt^^) und eigentlich möchte ich ja alles reinschreiben solange bis das file ne bestimmte größe erreicht hat und dann ein neues anfangen oder sowas. Naja wenn du sagst es steht doch da, dann hab ich es wohl falsch verstanden und es ist mein jetziger gedanke.

und wozu ist append? append heißt anfügen^^ aber wenn ich count ändere sollte es da nicht schon angefügt werden?


ich hab das gefühl ich stell mich grad total doof an, sorry dafür :-( :-(


----------



## zeja (28. März 2008)

*pattern* - _the pattern for naming the output file_

Das war dir klar?

*count* - _the number of files to use_

Wieviele Dateien von limit bytes Größe sollen maximal entstehen? Auch wenn append auf false steht könnten ja in einem Programmlauf mehr Logginginformationen entstehen als in eine Datei passen.

*limit* - _the maximum number of bytes to write to any one file_

Die maximale Dateigröße einer Logdatei danach wird eine neue begonnen, sofern count größer als 1 ist.

*append* - _specifies append mode_

Wenn append auf false steht, wird bei jedem Neustart des Programms mit einem neuen Log begonnen und nicht an ein altes rangeschrieben. 

Ansonsten probies einfach mal aus in der du eine Schleife machst und daraus in dein Log schreibst und schaust was so passiert.


----------



## kirina (31. März 2008)

Okay jetzt hab ich es verstanden, ich danke dir!

Ich habe nur noch ein Problem, wenn ich count auf etwas anderes stelle als 1, dann legt er
dateien an wie "teste_log.text.0" (was man natürlich erst umbenennen muss bevor man es lesen kann, außer man sagt für .0 immer editor verwenden oder so, aber das begeistert mich jetzt wenig, vor allem da das dann für jede aufkommende zahl gemacht werden muss)...kann man das irgendwie ändern? also das stattdessen "teste_log.0.txt" oder sowas geschrieben wird

und an sich ist es mir auch egal wieviele dateien ich am ende hab, da will ich keine feste größe, ich will nur, das eine datei nicht größer als  z.b. 4mb wird und wenn ich nach nem monat 200 davon hab ist mir das auch egal^^ (also jetzt achte mal keiner auf genaue zahlenangaben bitte xD)


----------

