globale Logdatei für Anwendung erstellen

sportingt

Mitglied
Hallo Leute,

ich möchte gerne für meine Anwendung eine Logdatei über alle benutzen Klassen
erstellen.
In dieser Logdatei sollen nicht nur Exceptions gelogt werden, sondern auch von mir generierte Outputs.
Als Zeilenkenner soll noch ein Timestamp mitgeführt werden.
Bisher habe ich das immer über eine ArrayListe gelöst.
Diese ArrayList wurde in allen Klassen mit
ArrayList.add(outputstring) gefüllt.


public static List outputList = new ArrayList();
...
Calendar calendar = Calendar.getInstance();
tstamp = new Timestamp(calendar.getTimeInMillis());
...
FileWriter fwr = new FileWriter(logFile);
BufferedWriter bwr = new BufferedWriter(fwr, 1024);
...
for(Iterator iterOutputlist = outputList.iterator();iterOutputlist.hasNext(); ){
String outputline = (String)iteroutputlist.next();
outputline = tstamp.toString() + outputline;
bwr.write(outputline,0,outputline.length());
bwr.newLine();
}
bwr.close();



Das hat bisher auch immer funktioniert. Leider ist meine Output ziemlich lang und ich bekomme einen Out of Memory. Ich denke das die 65MB Grenze der JVM durch die Lange ArrayList gesprengt wird.

Hat jemand einen Tip für so ne Logfileerstellung?

mfg
sportingt
 
Danke für den Tip

aber das erschlägt einen ja mal wieder. Wollte mich nicht ausschliesslich mit
Application-Logging beschäftigen, sondern eine einfache Möglichkeit finden.
Mit ein paar Zeilen Code zum Erfolg.
Für größere Anwendungen, die ständig gemonitored und ausgewertet werden müssen sicherlich ein gutes Tool. Für ein einfaches Log eventuell zu umfangreich.

mfg

sportingt
 
Super

so ein Tutorial bringt einen doch immer wieder weiter.
Das ist genau das richtige. einfach und effizient. Hat sich doch gelohnt.

Danke
 
Noch nicht bitte!
Ich habe einen Sehr leichten und schnellen Logger gemacht. Und das ganze braucht nur ein paar Zeilen Javacode!

Vereinfachter Code!
Code:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Date;

class Main
{
    File logger;
    BufferedWriter logwrite;

public static void main(String[] args)
{
    new Main();
}

Main()
{
    logger = new File("log.txt");
    logger.createNewFile();
    FileWriter logwritef = new FileWriter(logger);
    logwrite = new BufferedWriter(logwritef, 1024);
}

void p(String s)
{
          try {
		logwrite.write(s);
		} catch (IOException e) {
			e.printStackTrace();
		}
          System.out.println(s);
}

public void exit()
	{
		p("Applikation wird beendet! @" + (new Date().toString()));
		try {logwrite.close();}catch(IOException e){e.printStackTrace();}
		System.exit(0);
	}

Über die methode 'p'(rint) schreibt man etwas in den log und auf die Konsole.
Leider muss man dan immer über diese Exit Methode das Programm beenden, da sonst der Dateizugriff nicht(Richtig) beendet wird!

mfg Longor1996
(Mein erster Post im Forum)
 
Zurück