log4j

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,
kennst sich jemand mit log4j aus, oder kennt jemand ein gutes Tutorial?
 
G

Gast

Gast
Kenne mich selbst gar nicht damit aus. Habe es nur runtergeladen. Und wollte so nen paar erste Tipps haben
was ich damit machen kann und wie es geht.
Am besten wäre nen gescheites Tutorial.
 
G

Gast

Gast
Also wie ich dir lib einbinde, und was ich tun muss um letztendlich was zu loggen.
 

NTB

Bekanntes Mitglied
Ach kein Problem. Deine erste Anfrage hier war um 13.30 Uhr. Da wollen wir mal richtig schnell mit guten Tipps helfen. Das ist das tolle an diesem Forum. Man kriegt richtig schnell gute Tips.

Also ein Tutorial gibts hier.
Und wie Du bei Java eine lib einbinden kannst, findest Du hier. Und wie Du dann mit log4j letztendlich loggen kannst, findest Du hier. Tja, ganz wichtig, ist übrigens auch noch das hier

So weisst Du nach nur fünf Stunden, wo Du ansetzen kannst. Ich wüsste jetzt nicht, wie man schneller sein könnte, wenn man an so einer Stelle nicht weiter kommt, als mit einer Anfrage hier in diesem Forum.
 
G

Gast

Gast
Kannste vielleicht mal nen kleinen verständlichen Beispielcode zeigen, wie man z.B.: die Übergabewerte, die ReturnWerte, und etwaige Fehler in ein File loggt.
Am besten mit Beispielcode und Config-File.

Ps.: Wo musst das Config-File hin?
 
G

Guest

Gast
Na gut ich glaube ich sollte mal ein bisschen spezieller werden:

Ich habe zum testen zwei Klassen,
die Erste:
Code:
package Start;

import org.apache.log4j.Logger;

import Test.Test;

public class Start {

	
	
	public static void main(String[] args) 
	{
		
		//LogTests
		
		Test t1 = new Test();
		t1.testAusgabe("t1", 1);
		
		Test t2 = new Test(1,2);
		t2.testAusgabe("t2", 2);
		
		Test t3 = new Test(1,2,3);
		t3.testAusgabe("t3",3);
		
		
		

	}

}

Die Zweite:
Code:
package Test;

public class Test 
{
	private int a,b,c;
	
	public Test()
	{
		this.a = 0;
		this.b = 0;
		this.c = 0;
	}
	
	public Test(int a, int b)
	{
		this.a = a;
		this.b = b;
		this.c = 0;
	}
	
	public Test(int a, int b, int c)
	{
		this.a = a;
		this.b = b;
		this.c = c;
	}
	
	public String testAusgabe(String ausgabe, int anzahl)
	{
		for(int i = 0; i<anzahl; i++)
			System.out.println(ausgabe);
		
		return ausgabe + Integer.toString(anzahl);
	}
	
	
	
}

Ist halt nur zum testen.
Jetzt meine Frage. Was müsste ich machen um z.B. alle Übergabeparamter und alle Return Values(mit aktuellen Datum) in die Datei "testDatei" zu schreiben?
Und wo müsste ich die config datei hinschreiben und was müsste da drin stehen?

Danke schonmal für die Hilfe.
 
G

Guest

Gast
Habe das jetzt mal soweit:
Code:
package Start;



import org.apache.log4j.Logger;

import Test.Test;

public class Start {

	 public static Logger logger = Logger.getLogger(Test.class.getName());
	
	public static void main(String[] args) 
	{
		logger.info("Programm gestartet");
		
		Test t1 = new Test();
		t1.testAusgabe("t1", 1);
		logger.info(t1);
		
		Test t2 = new Test(1,2);
		t2.testAusgabe("t2", 2);
		
		Test t3 = new Test(1,2,3);
		t3.testAusgabe("t3",3);
		
		logger.info("Programm beendet");
	}

}

Das Config File:
Code:
log4j.rootLogger=DEBUG, A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.PatternLayout

log4j.appender.A1.layout.ConversionPattern=%d %-5p [%t] %-17c{2} (%13F:%L) %3x - %m%n
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=logFile
log4j.appender.A2.Append=false

Aber wie könnte ich jetzt mir sämtliche Übergabeparamter und Returnvalues loggen lassen. Ohne in jede einzelne Methode rein zu gehen?
 

NTB

Bekanntes Mitglied
Oh fein, ein kleines Stück vom Gartenzaun, mit dem ich da oben gewunken habe, ist angekommen.

Warum verrätst Du eigentlich nicht mal im Ganzen, was Du vor hast? Warum machst Du nichts selbst? Warum muß man Dir alles aus der Nase ziehen? DU willst doch die Hilfe.

Aber wie könnte ich jetzt mir sämtliche Übergabeparamter und Returnvalues loggen lassen.

"Programm gestartet" hast Du ja schon hinbekommen. Was hast Du probiert, um Variablen loggen zu lassen?

Ohne in jede einzelne Methode rein zu gehen?
Hä?
 
G

Guest

Gast
Ok,
habe bisher einfach nur mit
Code:
public Test(int a, int b, int c)
	{
		LogWriter.logger.info(a + " " + b + " " + c);
		this.a = a;
		this.b = b;
		this.c = c;
	}
z.B. habe ich das so gemacht. Aber da müsste ich ja in meinen Programm in jeder Methode das einbauen.
Und das will ich echt ungerne, deshalb wollte ich wissen ob es da eine andere Möglichkeit gibt das zu lösen?

Allgemein gesehen habe ich ein Programm wo aus Sicherheitsgründe und zur späteren Fehlersuche eine ganze
Menge geloggt werden soll (Sinn und Performance vernachlässiger wir einfach mal).
 
G

Gast

Gast
Das heist für mich, das ich z.B. in meiner Main-Methode dem Logger sagen will, das er sämtliche Übergabeparameter und Return Values des gesammten Programmes (am besten mit Datum, Filename und Zeilennummer) in ein File schreiben soll.
 

NTB

Bekanntes Mitglied
Anonymous hat gesagt.:
Ok,

z.B. habe ich das so gemacht. Aber da müsste ich ja in meinen Programm in jeder Methode das einbauen.
Und das will ich echt ungerne, deshalb wollte ich wissen ob es da eine andere Möglichkeit gibt das zu lösen?

Nein. Nicht mit Log4j soweit ich weiß.

Noch ein Hinweis: Es macht Sinn, statt einfach die Logausgabe, vorher per IF den Loglevel abzufragen:
Code:
        if (LOG.isInfoEnabled()) {
            LOG.info("TestMethod -> Parameter a: " + a);
        }
Dadurch werden die Strings nur dann alloziiert, wenn Du wirklich loggst. Ausserdem werden dann eventuelle Berechnungen in den Logausgaben nicht ausgeführt.

Dafür kann man sich in Eclipse (und anderen Umgebungen bestimmt auch) fein Templates zur Automatisierung bauen. Unter /Window/Preferences.../Java/Editor/Templates trägt man als Name z.B. "info" ein und im Pattern:
Code:
if (LOG.isInfoEnabled()){
	LOG.info("${enclosing_method} -> ${cursor}");
}

Beim Programmieren dann wie in gewohnter Form "info" gefolgt von STRG+Leertaste tippen und freuen.
Wenn man logging von Anfang an einbaut, dann ist das auch nicht viel Arbeit. Macht man es nicht, spart man sich die Arbeit, will man es doch haben - nunja, dann wendet man die gesparte Arbeit halt doch auf. Letzteres ist wohl für Deinen Fall zutreffend. Mit dem Code Template geht's aber tatsächlich recht schnell.
 
G

Guest

Gast
Danke nochmal für die Antwort.

Habe mir jetzt so nen Template gebaut:
Code:
if (LOG.isInfoEnabled()){ 
   LogWriter.logger.info("${enclosing_method} \n" + 
	" ${enclosing_method_arguments}" ${enclosing_method_arguments}); 
}

Jetzt soll das natürlich auf unbedingt viele Übergabeparater passen:
Beispiel:
Code:
public String testAusgabe(String ausgabe, int anzahl)
	{
		if (LOG.isInfoEnabled()){ 
			LogWriter.logger.info("testAusgabe \n" + 
					"ausgabe, anzahl" + ausgabe, anzahl);  ////////FEHLER
		}
Hier gibts den Fehler weil er das "," als Trenner erkennt. Noch ne gute Idee wie ich das lösen könnte?
Wollte an der Stelle, wie im Template zu sehen, die Übergabeparamter mit ihren Inhalten loggen.
 

NTB

Bekanntes Mitglied
Nein, keine Idee. Aber so ist das doch schon nicht schlecht. Dann tauschst Du halt das Komma schnell aus.

Allerdings ist das dann nicht besonders lesbar.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M log4j Problem mit jlink Allgemeine Java-Themen 19
T Log4j integrieren, wie? Allgemeine Java-Themen 7
T Logging mit org.apache.logging.log4j Allgemeine Java-Themen 1
M Schutz vor Log4J Allgemeine Java-Themen 2
W Sicherheitslücke in Log4j Allgemeine Java-Themen 66
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
MiMa mit Log4j einzeln Protokollieren Allgemeine Java-Themen 7
A JWS application - log4j wie configurieren Allgemeine Java-Themen 1
A Log4j configurieren Allgemeine Java-Themen 1
L Applet Wo loggt log4j bei Applets Allgemeine Java-Themen 0
T Log4J - Deaktivierung für einzelne Klassen Allgemeine Java-Themen 7
D Log4J RollingFileAppender rolliert nicht Allgemeine Java-Themen 3
MiMa Log4j in Dateien mit eigenem Namen schreiben Allgemeine Java-Themen 3
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
O log4j - Verständnisfrage Allgemeine Java-Themen 1
O [log4J] Unterschied SocketServer <-> SimpleSocketServer Allgemeine Java-Themen 0
O log4j pfad per umgebungsvariable setzen Allgemeine Java-Themen 5
T [log4j] Wie nutzt man log4j.properties? Allgemeine Java-Themen 7
O log4j, Problem bei Ausgabe null-Wert Allgemeine Java-Themen 0
O log4j - eigenes Log für einzelne Klasse Allgemeine Java-Themen 5
J log4j ohne propertiedatei Allgemeine Java-Themen 4
H [Logback || log4j] Wie richtig loggen / Log Instanzen verwalten Allgemeine Java-Themen 2
A Threads Log4J Logger wird "überschrieben" Allgemeine Java-Themen 3
N Log4J PatternLayout Allgemeine Java-Themen 2
S Frage zu Format Modifiers in Log4j Allgemeine Java-Themen 11
S log4j, root logger logt nur FATAL? Allgemeine Java-Themen 9
P Wie bei log4j den Dateipfad der Logdatei zur Laufzeit ändern? Allgemeine Java-Themen 3
C Grundsätzliches zu log4j Allgemeine Java-Themen 8
C Log4J mit 2 Appender Allgemeine Java-Themen 4
reibi log4j - Bestes Konzept Allgemeine Java-Themen 10
F System.out.println mit log4j ersetzen Allgemeine Java-Themen 10
F Log4J - Detaillierte Logeinträge Allgemeine Java-Themen 2
F log4j DailyRollingFileAppender Allgemeine Java-Themen 2
T Wahrscheinlich Problem mit log4j.properties Allgemeine Java-Themen 19
B Log4J und Categories Allgemeine Java-Themen 4
P Log4J - logt nicht Allgemeine Java-Themen 5
L log4j layout Allgemeine Java-Themen 3
S Log4j und SLF4J - Laufzeitänderungen Allgemeine Java-Themen 11
E Eclipse Axis, Jena, HTTPClient - log4j Meldungen deaktivieren? Allgemeine Java-Themen 6
ruutaiokwu log4j appender in log4j.xml in java referenzieren... Allgemeine Java-Themen 6
G log4j File erzeugen und Pfad bestimmen Allgemeine Java-Themen 3
ruutaiokwu System.out auf files umlenken in log4j.xml Allgemeine Java-Themen 4
H log4j & taskname Allgemeine Java-Themen 3
C log4j.properties wird nicht verwendet?? Allgemeine Java-Themen 3
S log4j, Datum in Fileappendern formatieren Allgemeine Java-Themen 4
G Log4J Verzeichnis der Log-Datei konfigurieren Allgemeine Java-Themen 8
K log4j-Warnung mit Quartz Allgemeine Java-Themen 3
G log4j package filter Allgemeine Java-Themen 10
G log4j - Behandlung nicht explizit abgefangener Exceptions Allgemeine Java-Themen 5
S log4j - doppeltes Logging Allgemeine Java-Themen 4
R log4j - Ausgabe der Logs Allgemeine Java-Themen 3
S log4j Logging über mehrere Klassen Allgemeine Java-Themen 13
MQue log4j mit hibernate Allgemeine Java-Themen 3
G Log4J - Logs älter als 3 Tage löschen Allgemeine Java-Themen 5
S log4j.dtd nicht in jar gefunden Allgemeine Java-Themen 7
H log4j - täglichen DailyRollingFileAppender Allgemeine Java-Themen 2
H Mit Log4j erzeugte Datei einlesen Allgemeine Java-Themen 2
hdi log4j in eine Datei Allgemeine Java-Themen 21
S Log4J DailyRollingFileAppender Allgemeine Java-Themen 4
M Log4J funktioniert nicht unter anderem Benutzer Allgemeine Java-Themen 5
B Log4j --- Welchen Appender, wie konfigurieren Allgemeine Java-Themen 3
F Logger in mehrere Dateien mit log4J Allgemeine Java-Themen 4
T Log4J: Bei Programmstart immer eine neue LogDatei erzeugen Allgemeine Java-Themen 9
ARadauer log4j DailyRollingFileAppender Allgemeine Java-Themen 4
B log4j löscht meine Logdateien Allgemeine Java-Themen 2
V Feinheitsfragen zu log4j Allgemeine Java-Themen 21
R log4j Allgemeine Java-Themen 5
DEvent log4j, commons logging, log4j.properties and co Allgemeine Java-Themen 12
K log4j Anzeigeformat Allgemeine Java-Themen 2
O Konkurrierender Zugriff auf Log-Datei mit Log4J Allgemeine Java-Themen 11
A log4j 1.3 und ändern der log Konfiguration zur Laufzeit Allgemeine Java-Themen 4
J Alte Log Files löschen mit log4j Allgemeine Java-Themen 3
U Log4j - gleichzeitige geöffnete File handles Allgemeine Java-Themen 2
P log4j Allgemeine Java-Themen 21
P log4j Allgemeine Java-Themen 9
B log4j FileAppender Dateizugriff Allgemeine Java-Themen 7
J Log4j / commons-logging Allgemeine Java-Themen 3
V log4j Problem . Allgemeine Java-Themen 8
D Log4j-HTMLLayout Allgemeine Java-Themen 2
G Log4j - Log-File Allgemeine Java-Themen 6
Q [log4j] nur ein Mal konfigurieren Allgemeine Java-Themen 2
Y log4J XML Konfiguration Allgemeine Java-Themen 8
K Logging mit Log4j Allgemeine Java-Themen 2
P log4j: Übersicht der Properties Allgemeine Java-Themen 5
G eigener logger mittels classe (dynamische logfilename) log4j Allgemeine Java-Themen 15
K log4j - eigene Info-Ausgaben Allgemeine Java-Themen 5
K log4j - Fehlermeldung Allgemeine Java-Themen 2
J stackTrace mit log4j loggen Allgemeine Java-Themen 9
F log4j XML-Syntax Allgemeine Java-Themen 4
F log4j loggen in mehrere Dateien Allgemeine Java-Themen 4
S Logging mit log4j Allgemeine Java-Themen 17
S Log4J mit 2 Appender, einer soll nur INFO loggen Allgemeine Java-Themen 3
Q Ant und org.apache.log4j.xml.DOMConfigurator Problem Allgemeine Java-Themen 2
S log4j Allgemeine Java-Themen 2
V log4j.properties wird in der jar Datei nicht gefunden? Allgemeine Java-Themen 2
F [Log4J] Logdatei mit einem schlag über 200MB! Allgemeine Java-Themen 4
M Log4J - Protokollierung auf die GUI zaubern! Allgemeine Java-Themen 11
S log4j Protokoll in XML Allgemeine Java-Themen 11
B Wohin mit log4j.properties Allgemeine Java-Themen 2
M Rat gesucht: Logging (log4J oder java.util.logging oder .) Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben