Loggen mit log4j

irfl

Mitglied
Hallo,
ich bin leider eine blutige Anfängerin was Programmierung betrifft. Im Moment bin ich gerade dabei etwas zum Loggen meines Programmablauf zu erstellen. Beim Suchen zu diesem Thema bin ich auf log4j gestoßen und habe mich auch schon mit Dokus und Tutorials auseinandergesetzt, allerdings noch nicht das gefunden was ich verwenden möchte:confused:

Und das wäre meine Frage: Wie erhalte ich die Logdaten (keine selbsterstellten Messages)? Also z.B. Socket connected (ich habe zwar keine Socket, aber ihr wisst sicher was ich meine:)).

Vielen Dank schon einmal im Voraus.

Lg irfl
 
Hallo,
ich bins noch mal. Vielleicht könnt ihr mir ja anhand meines Codes eine Auskunft geben. (Ich bin wirklich schon sehr verzweifelt:´()

Code:
public void logging(){
        try{
	String name = "testtest.log";
	PatternLayout layout = new PatternLayout("%r [%t] %-5p %c -%m %n");
	FileAppender fa	= new FileAppender(layout, name );
	logger.addAppender(fa);
	logger.setLevel(Level.ALL);
        }
      catch (Exception ex){
	System.out.println(ex);
        }
}

Also die Datei testtest.log wird bereits erstellt, allerdings wird hierbei nur etwas eingefügt, wenn ich es direkt anweise, also z.B. logger.debug(message). Allerdings möchte ich doch gern, dass das Programm selbst die Angaben liefert, die in die Datei geschrieben werden sollen. Stell ich mir das ganze zu einfach vor:confused: Kann man das irgendwie umsetzen?

Vielen Dank schon mal für die Rettung!
mfg irfl
 
Naja aber wenn ich die Logdatei selbst schreiben muss, macht das doch gar keinen Sinn oder? Woher will ich denn dann wissen, wann da ein Fehler auftritt usw
(Steh ich da jetzt irgendwie auf dem Schlauch oder so?:( )
 
Dann frag ich mal so. Woher soll denn die Logging-API das wissen? Du hast doch das Programm geschrieben und weißt, wo Fehler auftreten können.

Wo du zum Beispiel loggen kannst, ist in einem catch-Block. Wenn eine Exception an dieser Stelle auftreten sollte, kannst du die Exception mitloggen. So hast du einen Nachweis über diese Exception. Du hast ja bei vielen Programmen keine Console in denen du die Excpetion siehst. Damit diese dann festgehalten werden können, kann man sie halt mit loggen.

MFG

Sascha
 
Ok, da muss ich mal schauen, wie ich das umsetzen kann. Danke erst mal für die Infos. Zwei Probleme hab ich aber schon. Beim Programmablauf wird die Ausgabe auf der Konsole und in die Datei umgesetzt. Eigentlich möchte ich die Ausage nur in die Datei. Zusätzlich wird in die Datei statt des Datums und der Uhrzeit nur eine 0 ausgegeben und beim Neustart wird das geloggte einfach an die Datei angehangen. Gibt es da einen Befehl, mit der die Datei überschrieben wird?
 
Dann nutz mal für die Zeit %d.

Warum möchtest du denn die Datei immer wieder überschreiben?
Code:
FileAppender fa	= new FileAppender(layout, name, false );

Poste mal bitte deinen Code.

MFG

Sascha
 
Code:
public class LogFileWrite {
	
      private static Logger logger = Logger.getRootLogger();
	
      public void logging(){
	try{
	         String name = "testtest.log";
	         PatternLayout layout = new PatternLayout("%d [%t] %-5p %c - %m %n");
	         FileAppender fa	= new FileAppender(layout, name, false );
	         logger.addAppender(fa);
	         logger.setLevel(Level.ALL);
	         logger.debug("Programm gestartet");
	}
	catch (Exception ex){
	          System.out.println(ex);
	}
	}
}

Also so siehts bis jetzt aus (ich hab deine Vorschläge schon eingearbeitet..Meldung wird allerdings immer noch auf Konsole ausgegeben:( ). Eigentlich wollte ich es so machen, dass der Name der log-Datei aus einem Textfeld ausgelesen wird, um sie dann zu erstellen, aber das hatte bis jetzt noch nicht funktioniert:(

mfg irfl
 
Folgendes funktioniert bei mir:
Java:
package de.tutorials;

import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;

public class LogFileWrite {

	private static final Logger classLogger = Logger
			.getLogger(LogFileWrite.class);

	public static void main(String[] args) {
		try {
			final String name = "testtest.log";
			final Logger rootLogger = Logger.getRootLogger();
			final PatternLayout layout = new PatternLayout(
					"%d [%t] %-5p %c - %m %n");
			final FileAppender fa = new FileAppender(layout, name, false);
			rootLogger.addAppender(fa);
			rootLogger.setLevel(Level.ALL);
			classLogger.debug("Programm gestartet");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}

@Sascha: Wenn man das so macht braucht man keine Konfigurationsdatei.
 

Neue Beiträge

Zurück