log4J
-
hallo Leute,
ich möchte für meine privaten Projekte zum Debuggen log4J einsetzen und bin auf der Suche nach einem leichtverständlichen deutschen Tutorial. Kann mir da jemand helfen?
(Mit google habe ich bisher nichts passendes gefunden - vielleicht stelle ich mich auch nur zu dumm an.)Außerden wäre ich so für "Tips & Tricks" im Umgang mit log4J sehr dankbar!
Vielen Dank für Eurere Hilfe!
Ciao
shoat
-
Hi shoat,
im Benutze common-logging von Apache und das log4j dadurch nur indirekt.
Eine deutsche Dokumentation habe ich noch nicht gefunden, aber das ist alles auch nicht so kompliziert.
Hier ein link (in englisch) den ich ganz gut finde.http://www.vipan.com/htdocs/log4jhelp.html
-
hallo zafor!
danke für den Link, ich habe es mir schon mal angeschaut und steige sogar halbwegs durch. kannst Du mir vielleicht allgemein ein paar Tipps im Umgang mit log4J geben? worauf muss ich besonders achten und was sollte ich tunlichst unterlassen? und was hat es mit dem common-logging von Apache auf sich? ich dachte log4J sei von Jakarta!
Danke schon mal im voraus!
Ciao
shoat
-
und was hat es mit dem common-logging von Apache auf sich? ich dachte log4J sei von Jakarta!
ja ja, beides ist von Jakarta.
http://jakarta.apache.org/commons/logging.htmlDas commons logging ist nur eine Brücke oder eine Verpackung. Die Arbeit wird letztendlich von der Log Implementierung gemacht. Das bedeutet der Logger ist austauschbar. Commons logging funktioniert mit log4j oder z.B dem Logging der JDK 1.4.
kannst Du mir vielleicht allgemein ein paar Tipps im Umgang mit log4J geben?
Böh, frag' einfach nochmal wenn es ein Problem gibt.
-
hallo zafor,
ich habe gleich mal eine Frage! ich habe mich schon mal ein wenig an log4J versucht gehabt. allerdings gab es da eine zentrale Class Logger, mit der ich dann die Log-Meldungen der verschiedenen Stufen gesetzt habe. In dem Beispiel in Deinem Link (www.vipan.com/... )ist aber immer nur die Rede von einer Category.
Meine Frage: Was ist der Unterschied zwischen Logger und Category? Oder ist das eine nur ein Synonym für das andere?
Vielen Dank für Deine Hilfe!
Ansonsten habe ich das Beispiel gleich mal bei mir umgesetzt und es funktioniert prächtig. Sollte ich weitere Fragen haben, melde ich mich wieder bei Dir!
Ciao
shoat
-
Was ist der Unterschied zwischen Logger und Category? Oder ist das eine nur ein Synonym für das andere?
Bingo
Als das Kind älter wurde haben die Eltern es in Logger umbenannt.
Logger und Category ist das gleiche.
-
Das geschah, nachdem SUN begann, Loging in die J2SE einzubauen. Da wollte man es den Programmierern einfacher machen, vom einen auf das andere Logging-Konzept umzusteigen. Davor hiess es Category.
/Dirk
-
hallo Leute,
erst Mal danke für Euere Hilfe wegen Logger und Category. ich denke, ich habe es begriffen. nachdem ich ein wenig recherchiert habe, sind keine Fragen mehr offen - Danke!
ich habe mich eben auch ein wenig mit Loggern und Logger-Hierarchien beschäftigt. ich sehe dabei natürlich sofort die Vorteile und ich kann die Verfahren auch prinzipiell anwenden. allerdings bin ich nicht mir überhaupt nicht sicher, wie man die Logger jetzt setzen soll!
also, was ich meine ist, ist es sinnvoll
- meinetwegen einen Logger pro Klasse
- und davon "abgeleitet" zusätzlich einen für jede Funktion
zu setzendamit könnte ich über den Klassenlogger allgemeine Einstellungen treffen (z. B. alle Debug-Messages hart ausschalten) und über die Funktionen-Logger gegebenenfalls das Verhalten in eine bestimmten Region / Funktion steuern, wenn ich diese als potentielle Fehlerquelle ausgemacht habe. soweit meine ersten Gedankengänge, aber ich kann natürlich total daneben liegen. Deswegen meine Fragen:
Wie setzt man richtig Logger?
Wie macht ihr es?
Gibt es dazu bestimmte Vorgaben, die beachtet werden sollten / müssen?
Oder habt ihr in diesem Bereich sonst noch Tipps für mich oder wißt ihr Tricks,
wie es ganz besonders gut funktioniert?
Und überhaupt, welchen Namen sollte die Logger eigentlich haben?
(z. B. <classname>.<funtionname>, oder wie?)Vielen Dank für Euere Hilfe!
Ciao
-
... ich denke, ich habe es begriffen. nachdem ich ein wenig recherchiert habe, sind keine Fragen mehr offen - Danke!
ich habe mich eben auch ein wenig mit Loggern und Logger-Hierarchien beschäftigt. ich sehe dabei natürlich sofort die Vorteile und ich kann die Verfahren auch prinzipiell anwenden. allerdings bin ich nicht mir überhaupt nicht sicher, wie man die Logger jetzt setzen soll! ...
Dann Spielen wir beide jetzt in der gleichen Klasse.
Bei der Namensvergebung benutze ich bisher ausschliesslich <classname>.
Die Idee in einer Klasse zusätzliche Log Objekte zu erzeugen scheint mir auch praktikabel.
z.B mit den Namen: EXCEPTION.<classname> oder METHODCALL.<classname>.
Im Moment mache ich es so das Konstruktor und Init-Methode auf dem Level Info geloggt werden und normale Methoden auf Level Debug.(z. B. <classname>.<funtionname>, oder wie?)
Für jede Methode eine Log Objekt? Das scheint mir etwas viel. Falls der Name der Methode ausreicht kannst du
%M
in der log4j.properties benutzen.
-
hallo,
ich bin es nochmal. kann mir jemand folgendes erklären.
ich habe in einer log4j.properties - Datei:
log4j.rootLogger=DEBUG, dest1 log4j.appender.dest1=org.apache.log4j.ConsoleAppender log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
stehen. diese ist auch über den Java Classpath ( oder sollte ich Application Classpath sagen?) verfügbar - jedenfalls erhalte ich bei einem Programm in der Art:
public class TestProperties { private static Logger logger = Logger.getRootLogger() ; public static void main(String[] args) { logger.debug ("hello world!") ; } }
auf der Console die Ausgabe:
hello world!
soweit, so gut. wenn ich jetzt dass Programm abändere, z. B. in der Art:
[cpp]public class TestProperties
{
private static Logger logger = Logger.getRootLogger() ;public static void main(String[] args)
{
BasicConfigurator.configure() ;
logger.debug ("hello world!") ;
}
}[/cpp]dann erhalte ich als Ausgabe auf der Console nicht - wie erwartet:
0 [main] DEBUG root - hello world!
sondern:
[b]hello world![/b] 0 [main] DEBUG root - hello world!
d. h. mit dem Aufruf das BasicConfigurators wird (in diesem Fall) die bestehende Konfiguration nicht gelöscht, sondern eine zweite "daneben gesetzt". warum ist das so? und wie kann ich die bestehende "Standard-Konfiguration" überschreiben bzw. ändern?
Danke für Euere Hilfe!
Ciao
shoat
-
hallo Leute!
hat keiner meine Frage verstanden oder ist sie zu trivial oder weiß es wirklich keiner?
ich bin jedenfalls noch nicht dahinter gekommen,wäre als schön, wenn ihr es mir verratet, wenn ihr es wißt.Danke!
Ciao
shoat