Feinheitsfragen zu log4j

Status
Nicht offen für weitere Antworten.

Verjigorm

Top Contributor
Hallo,

ich benutze zum ersten Mal log4j im "größeren Stil" (ab sofort auch immer :D )

Generell läuft alles so wie ich es will, es gibt da nur noch ein paar kleine Feinheiten, die ich nicht hinbekomme
mit der Konfiguration in der Properties-Datei:

1) Der rootLogger läuft noch auf DEBUG, wir haben eine org.apache-Lib, die freudig mitloggt, das wollte ich ausschalten.
Laut Doku kann man für jedes package das LogLevel separat angeben mit log4j.logger.vollerpackagename=XXX
Bei mir sieht das dann so aus:
Code:
log4j.rootLogger=DEBUG, A1, file
log4j.logger.de.poyry.importe.reports=WARN
Aber der Logger loggt immer noch freudig mit, erst wenn ich den rootLogger auf WARN stelle, isser ruhig.
Was mache ich da falsch?
Packagename ist definitiv richtig!

2)Im AusgabePattern habe ich %C stehen, was mir den kompletten Klassenpfad samt aller packages angibt, kann ich das irgendwie ändern, dass ich nur den reinen Klassennamen erhalte??

Edit: Grad gefunden: %C{1} muss es heissen
 

Verjigorm

Top Contributor
Frage 1 ist immer noch offen

Zudem eine neue Frage:
An einigen STellen würde ich gerne den kompletten StackTrace ins Log schreiben.

Wie macht man das am besten?
hab jetzt getStacktrace() aufgerufen und durchlaufen und den jeweiligen ArrayInhalt geloggt, finde ich aber sehr umständlich und unschön
 

Murray

Top Contributor
Bei printStackTrace kann man ja einen OutputStream angeben. Das könnte z.B. ein ByteArrayOutputStream sein, von dem man sich dann hinterher die geschriebenen Bytes abholen und in einen String wandeln kann. Damit hat man das, was bei printStackTrace() auf der Konsole landen würde, in einem String und kann damit machen, was man will (z.B. auch loggen).
 
G

Guest

Gast
Übergib einfach neben deiner jeweiligen Nachricht noch dein Throwale, dann macht log4j das automatisch.

API
 

Verjigorm

Top Contributor
Kann man irgendwie die aktuelle LogDatei im Programm aufrufen?
Oder den aktueleln Namen der Datei?

Würde die gerne öffnen ohne von hand ins fileSystem zu gehen
 

FArt

Top Contributor
Lies die API!

Es gibt nicht "die Logdatei"... es gibt nur Appender, die evtl. in eine Datei schreiben (evtl. mehrere Dateien).
Es gibt auch nicht nur eine Datei. Evtl. rollt die Datei (Nach Zeit oder Größe) über und es entstehen mehrere Dateien pro Appender.

Es besteht die Möglichkeit um dein Vorhaben zu realisieren. Jedoch ist das Vorhaben in der Regel sinnfrei.

Warum willst du das denn machen?
 

Verjigorm

Top Contributor
ich hab auch nicht geschrieben "DIE Logdatei" sondern "die AKTUELLE Logdatei", genau wegen dem Rolling FileAppender.

Laut Programmspezifikation soll es möglich sein, die LogDatei per Knopfdruck zu öffnen.

Nunja und genau das will ich realsieren...
 

FArt

Top Contributor
Verjigorm hat gesagt.:
ich hab auch nicht geschrieben "DIE Logdatei" sondern "die AKTUELLE Logdatei", genau wegen dem Rolling FileAppender.

Laut Programmspezifikation soll es möglich sein, die LogDatei per Knopfdruck zu öffnen.

Nunja und genau das will ich realsieren...

Es gibt auch nicht "die aktuelle Logdatei", denn mehrere Appender erzeugen u.U. mehrere Dateien, jeder eine andere.

Die Anforderung in dieser Art ist eher unüblich. Ich kenne kein Programm, wo das möglich wäre. Wieso auch?
 
G

Gast

Gast
Ansonsten, wenn du das wirklich implementieren willst (was ich auch irgendwie für seltsam halte), dann geh die Files im Logordner durch und lass dir einfach die mit dem aktuellsten Änderungsdatum geben.
 

FArt

Top Contributor
Gast hat gesagt.:
Ansonsten, wenn du das wirklich implementieren willst (was ich auch irgendwie für seltsam halte), dann geh die Files im Logordner durch und lass dir einfach die mit dem aktuellsten Änderungsdatum geben.

Dann würde ich doch lieber über die Klasse FileAppender gehen... nein, eigentlich würde ich das über einen eigenen Appender realisieren.

Ist das wirklich eine Anforderung des Programms? Ich würde vermuten, das ist ein suboptimaler Lösungsversuch einer Anforderung.
 

Verjigorm

Top Contributor
FArt hat gesagt.:
Ist das wirklich eine Anforderung des Programms? Ich würde vermuten, das ist ein suboptimaler Lösungsversuch einer Anforderung.

Steht so im Pflichtenheft.
Dachte das wäre überhaupt kein Problem ...

Es gibt nur einen FileAppender, der genau EINE AKTUELLE Logdatei erzeugt :)

ich habs jetzt so hinbekommen:

Code:
	public void test() 
	{
		@SuppressWarnings("unchecked")
		Enumeration<Appender> allAppenders = Logger.getRootLogger().getAllAppenders();
		Appender appender = null;
		
		while(allAppenders.hasMoreElements())
		{
			appender = allAppenders.nextElement();

			if(appender instanceof FileAppender)
			{
				System.out.println(appender.getName());
				FileAppender app = (FileAppender) Logger.getRootLogger().getAppender(appender.getName());
				System.out.println(app.getFile());	
			}
		}
	}
 

FArt

Top Contributor
Nichts desto trotz:
diese Lösung funktioniert technisch, ist aber mehr als suboptimal.

Wer rechnet schon damit, dass durch Konfiguration des Loggings sich das Verhalten des Programms verändert (z.B. indem mehr oder weniger in dieser "Ausgabe" im Programm landet, bis hin zu Fehlverhalten, wenn der Appender so nicht mehr existiert)?

Noch mal als Tipp: nur weil es im Pflichtenheft steht, ist die Anforderung nicht sinnvoll und sollte (muss) nicht (so) umgesetzt werden. Ich würde mal die eigentliche Anforderung eroieren, also was soll eigentlich erreicht werden, und dann eine konsistente Lösung dafür suchen. Wie sieht es mit konkurrierenden Zugriffen auf diese Datei aus? Hast du bedacht, dass das problematisch sein könnte?

P.S.: erreicht werden will in der Regel nicht "das Logfile muss im Programm einzusehen sein", sondern es geht darum, bestimmte Informationen zu erhalten.
 

Verjigorm

Top Contributor
FArt hat gesagt.:
Wie sieht es mit konkurrierenden Zugriffen auf diese Datei aus? Hast du bedacht, dass das problematisch sein könnte?

Die Datei wird ja nur zum Lesen geöffnet.
Das Programm ist fix, wenns in 2 Wochen abgegeben wird, wird daran nie wieder was verändert.
Das Programm läuft auch nur 1mal, also kein mehrfacher Zugriff oder sonstwas.

FArt hat gesagt.:
P.S.: erreicht werden will in der Regel nicht "das Logfile muss im Programm einzusehen sein", sondern es geht darum, bestimmte Informationen zu erhalten.

Das Logfile soll halt einsehbar sein ohne die Datei von Hand zu öffnen.
 
Darf ich mal hier n bissl spammen?

log4J schön und gut, aber ich bekomm das einfach nicht ordentlich an den Start. Sitze da schon viel zu lange dran und hab zig Anleitungen zu Installation gelesen und es will einfach nicht so richtig klappen.

Reicht es aus nur die log4j.jar in den projektordner zu schmeissen? Also wenn ich die .jar direkt über eclipse importiere klappt es zwar, aber ich habe zig neue Dateien die mir mein Projekt sehr hässlich machen. Geht es auch in schön?

Sorry für mein unqualifiziertes dazwischen-quatschen :) .

Grüße
 

FArt

Top Contributor
Verjigorm hat gesagt.:
Die Datei wird ja nur zum Lesen geöffnet.
Von dir schon, aber nicht vom Appender.

Verjigorm hat gesagt.:
Das Programm ist fix, wenns in 2 Wochen abgegeben wird, wird daran nie wieder was verändert.
Einen Cent für jedes mal, wo ich diesen Spruch gehört habe und er nach kurzer Zeit seine Bedeutung verloren hatte ;-)

Verjigorm hat gesagt.:
Das Programm läuft auch nur 1mal, also kein mehrfacher Zugriff oder sonstwas.
Es gibt mindestens zwei Threads aus deiner Applikation, die auf dieses File zugreifen, auch wenn nur eine Instanz deiner Applikation läuft.

Verjigorm hat gesagt.:
Das Logfile soll halt einsehbar sein ohne die Datei von Hand zu öffnen.
Und genau diese "Anforderung" hätte ich aus beim Konzeptreview gestrichen bzw. diskutiert. Kunden wissen in der Regel nicht was sie wollen, also sagt man ihnen was sie brauchen und was nicht. Sind die Kunden selber Techniker, muss man sie vor sich selber schützen. ;-)

Wenn du es richtig machen möchtest (Speicherverbrauch der VM im Auge behalten, sinnvolles Einsehen, nachladen nach Änderungen am Logfile, Suche im Logfile) ist der Aufwand das "Feature" nicht wert. Wenn du es nicht so aufwendig machen möchtest, ist das "Feature" an sich wertlos.

Wer Kundenwünsche nicht hinterfragt oder nicht hinterfragte Kundenwünsche umsetzt, wird mit PHP nicht unter 2000 Zeilen bestraft ;-)
 

Verjigorm

Top Contributor
FArt hat gesagt.:
Es gibt mindestens zwei Threads aus deiner Applikation, die auf dieses File zugreifen, auch wenn nur eine Instanz deiner Applikation läuft.

Grad letzte Woche gabs einen Thread dazu, dass ein lesender Zugriff niemals hinderlich sein sollte.
 
Verjigorm hat gesagt.:
TobiWanKenobi hat gesagt.:
Verjigorm hat gesagt.:
hab nur die log4j.jar im Projekt, sowie meine Properties-Datei zur Konfiguration, fertig

Hum, so hab ichs auch gelesen.
Hast du sie über Eclipse oder was auch immer importiert oder einfach in den Projektordner kopiert?

lib-ordner erstellen, reinkopiert und über den Build-Path hinzugefügt

Ahhh super! Läuft!
Vielen Dank!
 
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
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
G log4j Allgemeine Java-Themen 13
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


Oben