log4j

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

würdet ihr sagen, dass das eine gute methode ist einen logger zu implementieren?
ich habe da sganze statisch gemacht.

mein problem ist, dass mein log manchmal zeilenweise auseinander liegt..(schwer zu beschreiben).
jedes mal eine neue Instanz zu erzeugen sollte doch dann auch das log neu schrieben und dürfte in meinen augen dann falsch sein?

Code:
package tclass.util;

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

public class Log {

	// ****************************************
	// Logging methods
	// ****************************************
	// ****************************************
	// logger.debug(String); 
	// logger.info("My info-Message");
	// logger.warn("My warn-Message"); 
	// logger.error("My error-Message");
	// logger.fatal("My fatal-Message")
	// ****************************************
	// File Appender Options
	// logger.setLevel(Level.xxxx);
	// ALL | DEBUG | INFO | WARN | ERROR | FATAL | OFF: 
	 

		
	private static Logger logger = Logger.getRootLogger();

	public static Logger getLogger() {
		try {
			PatternLayout layout = new PatternLayout(
					"%d{dd.MM.yyyy HH:mm:ss,SSS} %-5p [%t] %c: %m%nFilename: %F  Linenumber: %L  Methodname: %M%n%n");
			FileAppender fileAppender = new FileAppender(layout, "c:\\SysLog.log",
					false);
			logger.addAppender(fileAppender);
			logger.setLevel(Level.ALL);
		} catch (Exception ex) {
			System.out.println(ex);
		}
		return logger;
	}
}
Code:
//implementiert habe ich das so
Logger log = Log.getLogger();
log.info("Inforamation");
 

fehlerfinder

Bekanntes Mitglied
Anonymous hat gesagt.:
ich habe da sganze statisch gemacht.
Da spricht eigentlich nichts dagegen - dafür gibt's doch "static".

mein problem ist, dass mein log manchmal zeilenweise auseinander liegt..(schwer zu beschreiben).
Ein Versuch wäre es trotzdem wert gewesen ;-) - meinst du damit, dass die Log-Ausgabe-Befehle im Programm auseinanderliegen? Das wäre durchaus sehr normal.

jedes mal eine neue Instanz zu erzeugen sollte doch dann auch das log neu schrieben und dürfte in meinen augen dann falsch sein?
Eine interessante Frage - teste das doch einfach mal aus, indem zu zwei Logger-Objekte erstellst, die beide auf denselben Logger/Appender zugreifen. Dazu empfehle ich dann die Verwendung einer Properties-Datei.

Code:
PatternLayout layout = new PatternLayout(
     "%d{dd.MM.yyyy HH:mm:ss,SSS} %-5p [%t] %c: %m%nFilename: %F  Linenumber: %L  Methodname: %M%n%n");
FileAppender fileAppender = new FileAppender(layout, "c:\\SysLog.log", false);
logger.addAppender(fileAppender);
logger.setLevel(Level.ALL);
Diesen ganzen "Krempel" kannst du in die bereits oben erwähnte Properties-Datei auslagern, sieht dann z.B. so aus:

Code:
log4j.rootLogger=DEBUG, FileSystemOut
log4j.appender.FileSystemOut=org.apache.log4j.FileAppender
log4j.appender.FileSystemOut.file=c:\\SysLog.log
log4j.appender.FileSystemOut.layout=org.apache.log4j.PatternLayout
log4j.appender.FileSystemOut.layout.ConversionPattern=%d{dd.MM.yyyy HH:mm:ss,SSS} %-5p [%t] %c: %m%nFilename: %F  Linenumber: %L  Methodname: %M%n%n
Das müsste so ungefähr hinkommen - ich habe es aus einer eigenen Props-Datei kopiert, die aber etwas anders aussieht. Insbesondere weiß ich nicht, ob du den Pfad so in die Props-Datei eintragen kannst, ich arbeite nur unter Linux. Wenn's Probleme damit gibt, melde dich nochmal.

Ob du im rootLogger statt DEBUG auch ALL eintragen kannst, weiß ich ebenfalls nicht, meine aber gelesen zu haben, dass ALL eher so ein intern verwendeter Level ist. Aber das wird wohl schon passen. ;-)
 
G

Guest

Gast
hab jetzt mal folgendes gemacht:
Code:
public Logger getInLogger() {
		try {
			PatternLayout layout = new PatternLayout(
					"%d{dd.MM.yyyy HH:mm:ss,SSS} %-5p [%t] %c: %m%nFilename: %F  Linenumber: %L  Methodname: %M%n%n");
			FileAppender fileAppender = new FileAppender(layout, "c:\\SysLog.log",
					false);
			logger.addAppender(fileAppender);
			logger.setLevel(Level.ALL);
		} catch (Exception ex) {
			System.out.println(ex);
		}
		return logger;
	}
Code:
//in einer main einer testclasse
Log logger = new Log();
		Logger log = logger.getInLogger();
		log.info("info1");
		Logger log2 = logger.getInLogger();
		log2.info("info2");


heraus kam das:

18.06.2008 10:24:32,125 INFO [main] root: info2
Filename: Script1.java Linenumber: 27 Methodname: testMain

18.06.2008 10:24:32,125 INFO [main] root: info2
Filename: Script1.java Linenumber: 27 Methodname: testMain

wieso kommen da zwei einträge?
 
M

maki

Gast
Frage am Rande: Wieso nicht einfach log4j so nutzen wie es gemeint wear, anstatt selbst nochmal etwas drumrum zu Proggen?
 
G

Gelöschtes Mitglied 5909

Gast
maki hat gesagt.:
Frage am Rande: Wieso nicht einfach log4j so nutzen wie es gemeint wear, anstatt selbst nochmal etwas drumrum zu Proggen?

Wenns wenigstens was Sinnvolles wär mit nem Errorcode z.b., aber so...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K log4j nach log4j2 überführen Java Basics - Anfänger-Themen 0
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
MiMa log4j als separate Dateien in Schleife? Java Basics - Anfänger-Themen 6
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
B Log4J Pfad des Logfiles definieren Java Basics - Anfänger-Themen 6
Tom299 Log4j in jeder Klasse definieren? Java Basics - Anfänger-Themen 12
O Wie Log4J - Ausgaben/Events auffangen?! Java Basics - Anfänger-Themen 3
S log4j in externer Library Java Basics - Anfänger-Themen 4
M xml log4j überschreiben für/in Java Klassen Java Basics - Anfänger-Themen 4
N wie *.class-Dateien mit log4j loggen? Java Basics - Anfänger-Themen 9
F Log4j - log4j:WARN No appenders could be found for logger Java Basics - Anfänger-Themen 1
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
0 Log4J Instanz erzeugen Java Basics - Anfänger-Themen 2
M Input/Output log4j mit properties datei Java Basics - Anfänger-Themen 6
T LOG4J Konfiguration Java Basics - Anfänger-Themen 5
W log4j "installieren" Java Basics - Anfänger-Themen 10
F ThreadId in Log4j Java Basics - Anfänger-Themen 4
M log4j Java Basics - Anfänger-Themen 11
H Log4J und Angabe eines Ordners Java Basics - Anfänger-Themen 5
A log4j - wie kann ich im Quellcode initialisieren statt in der properties-Datei? Java Basics - Anfänger-Themen 2
A log4j - Warum wird Methode getHeader 2x ausgeführt? Java Basics - Anfänger-Themen 2
S log4j pfad per umgebungsvariable setzen? Java Basics - Anfänger-Themen 2
G Probleme mit log4j Java Basics - Anfänger-Themen 2
M log4j design Java Basics - Anfänger-Themen 11
S LineNumberReader - bessere Lösung möglich? - Log4J Java Basics - Anfänger-Themen 9
G Kompletten Stacktrace mit Log4j ausgeben Java Basics - Anfänger-Themen 3
M logging mit log4j Java Basics - Anfänger-Themen 4
M log4j frage zu whitespaces Java Basics - Anfänger-Themen 2
G log4j Java Basics - Anfänger-Themen 3
H Log4J Pfad setzen Java Basics - Anfänger-Themen 2
M log4j Unterverzeichnis mit Datum , Timestamp in LogDateiname Java Basics - Anfänger-Themen 2
G Log4j? Java Basics - Anfänger-Themen 15
G Log4j notwendig oder nicht? Java Basics - Anfänger-Themen 16
J Log4j + Junit Java Basics - Anfänger-Themen 4
M log4j XML Konfigurationsdatei Java Basics - Anfänger-Themen 2
M "System.out" "System.err" bzw. log4j Java Basics - Anfänger-Themen 9
K log4j Java Basics - Anfänger-Themen 2
R log4j - Datum an Logdatei anhängen möglich? Java Basics - Anfänger-Themen 7
S log4j "Richtiges" Design Java Basics - Anfänger-Themen 4
B Log4J Anfänger sucht hilfe! Java Basics - Anfänger-Themen 4
N Log4J Problem Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben