Log4j notwendig oder nicht?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Ich habe für eine bereits existierende Webanwendung eine Java-Klasse zur Erweiterung dieser Webanwendung geschrieben. Die Java-Klasse habe ich in das Entsprechende Verzeichnis der Webanwendung (Tomcat) gelegt. Sie wird durch eine JSP aufgerufen.

Wenn ich das richtig verstanden habe, werden sämtliche Fehler oder System.out-Anweisungen, die in der Java-Klasse auftreten, automatisch vom Tomcat in entsprechende Log-Dateien geschrieben (stdOut bzw. stdErr).

Ein zusätzliches einbinden von Log4j in meine Java-Klasse kann ich mir doch dann eigentlich sparen oder?
 
M

maki

Gast
Du hast anscheinend den nutzen von Logging Frameworks nicht begriffen ;)
Auch ist es schlecht, seine Fehler innerhalb der TC log Datei suchen zu müssen.
 
M

maki

Gast
Auch, damit kann man dann super Debug ausgaben produzieren, Debugger sind in einer komplexen Anwednung viel zu verwirrend, da sie viel zu viele Details zeigen.

Deine Debug ausgaben kannst du an oder abschalten, für einzelne Klassen oder ganze packages.

Auch kannst du zB dafür sogen, dass dir eine email geschick wird, wenn ein Fehler (Exception) auftritt.

Dazu musst du nur deine Konfiguration ändern (log4j.properties), dein Java Code bleibt der gleiche und muss nicht geändert werden, vorrausgesetzt du hast schon deine Logging statements drin.

Mit System.out etc ist das nicht zu steuern, auch werden System.out immer ausgeführt, auch wenn du sie gar nicht mehr haben willst, nur eine Notlösung eben.

Ich steh auf log4j, sehr einfach, effizient und doch sehr sehr nützlich ;)
 
G

Guest

Gast
Ich habe ne Java-Klasse (und die Log4j Konfigurationsdatei) auf einen Tomcat übertragen. Sie wird dort von einer JSP aufgerufen. In Eclipse funktioniert das debuggen mit Log4j im Tomcat nichtmehr.

Woran könnte das liegen?
 

byte

Top Contributor
maki hat gesagt.:
Debugger sind in einer komplexen Anwednung viel zu verwirrend, da sie viel zu viele Details zeigen.
Hm, kA wie Du das meinst, aber der Debugger ist in meinen Augen das wichtigste Tool, was wir zur Verfügung haben, um Fehler aufzuspüren und zu beheben - gerade in komplexen Anwendungen! Logger sind imo nur zum Protokollieren sinnvoll.
 
S

SlaterB

Gast
Problem tritt mit 345. Durchlauf einer Schleife x im 9. Aufruf einer Operation y auf,
und zwar wenn Variable z unter 17.5 fällt

Logging:
if (z < 17.5) {
System.out.println(..);
}


was machst du im Debugging-Tool?
was machst du wenn du 3-4 Stellen gleichzeitig untersuchst/ abwechselnd/ zwei Tage später nochmal?

Logging bleibt bestehen bzw. ist mit simpler Konfiguration oder gar Auskommentierung bestmöglich zu handeln,
was kann da ein Debugging-Tool?

was machst du bei einem Ablauf über 2 Min., bei dem du 10 Zwischenwerte in 10 Unterprogrammen anschauen willst,
um langsam den Fehler einzugrenzen?
ohne Logging läuft gar nix
 

byte

Top Contributor
SlaterB hat gesagt.:
Problem tritt mit 345. Durchlauf einer Schleife x im 9. Aufruf einer Operation y auf,
und zwar wenn Variable z unter 17.5 fällt

Logging:
if (z < 17.5) {
System.out.println(..);
}


was machst du im Debugging-Tool?
Conditional Breakpoint oder Hitcount einstellen. :bae:
was machst du wenn du 3-4 Stellen gleichzeitig untersuchst/ abwechselnd
Mehrere Breakpoints setzen? Oder direkt Variablenwerte on the fly auswerten lassen (siehe Expressions View in Eclipse).

Logging bleibt bestehen bzw. ist mit simpler Konfiguration oder gar Auskommentierung bestmöglich zu handeln,
was kann da ein Debugging-Tool?

was machst du bei einem Ablauf über 2 Min., bei dem du 10 Zwischenwerte in 10 Unterprogrammen anschauen willst,
um langsam den Fehler einzugrenzen?
ohne Logging läuft gar nix
Das verstehe ich unter Protokollierung (passives Aufzeichnen von Informationen über Zeit). Auf den Großteil der Anwendungen trifft das aber nicht zu.
 
S

SlaterB

Gast
also den direkten Code in einem anderen Tool nachbauen,
na wenn das sinnvoll ist..

entweder drei Stellen im Code ändern, in dem man sowieso die ganze Zeit arbeitet
z < 17.5 wird in Sekundenbruchteilen z < 18
oder durch irgendwelche schrägen Menüs wandern?,
mit einem zweiten Berg Konfigurationen, der an einem anderen Workspace/ einem anderen Arbeitsplatz/ einer neuen Programmversion/ einer anderen Entwicklungsumgebung/ Programmiersprache nicht mehr da ist..

Java ist so mächtig, lass doch Java selber arbeiten ;)
was spart ein Debugger so ungemein? einzig sinnvoll scheint mir die Funktion, an einer bestimmten Stelle anzuhalten und dort individuell alle Inhalte anzuschauen/ schrittweise herumzuspringen,
dies wiederum zähle ich unter 'Auf den Großteil der Anwendungen trifft das aber nicht zu.' ;)
 

byte

Top Contributor
Wie stellst Du Dir die Fehlersuche in einer komplexen Software, wo x Leute mitarbeiten, denn vor? Willst Du erstmal alle 5000 Klassen mit Debug-Ausgaben vollschreiben, um dann den Fehler zu finden? :roll: Ich setze lieber mit einem Klick an die Stelle einen Breakpoint, wo ich den Fehler vermute und debugge dann, bis ich den Fehler gefunden habe.

Ich sage nicht, dass Logging unsinnig ist, aber wenns um die Fehlersuche geht, dann ist alles andere als der Debugger ineffizient. Ich wage einfach mal zu bezweifeln, das jemand der gegenteiliges behauptet, schon mal richtig mit dem Debugger gearbeitet hat. ;)
 
S

SlaterB

Gast
> Willst Du erstmal alle 5000 Klassen mit Debug-Ausgaben vollschreiben, um dann den Fehler zu finden?

wieso 5000?
da wo die Ausgabe hin muss, da kommt die Ausgabe hin genau wie der Breakpoint

> Ich setze lieber mit einem Klick an die Stelle einen Breakpoint

und genau dieser eine Klick geht doch nicht,
if (z < 17.5) {
System.out.println(..);
}
ist schnell geschrieben, auch schnell an 5 andere Stellen kopiert,
aber das gleiche als Breakpoint zu definieren?..
durch irgendwelche Menüs wandern, in einem leeren Fenster (immerhin mit code assist) irgendwie den gleichen Code nachbauen?..
man stelle sich vor, man müßte jede Operation einer Java-Klasse in einem eigenen Fenster bauen..
 
M

maki

Gast
Willst Du erstmal alle 5000 Klassen mit Debug-Ausgaben vollschreiben, um dann den Fehler zu finden?
Deshalb sollte man sie auch gleich beim erstellen miteinbauen ;)
Nachträglich Loggingstatements einzubauen ist ein Sch....job, aber manchmal notwendig, wenn die Entwickler das "vergessen" haben.

Es gibt Umgebungen, die man nicht Debuggen kann, dazu gehört ein App Server wie JBoss, da braucht man seine Unittests und ist ist bis auf die Logging Ausgaben Blind.
Ohne eine gute Logging Strategie ist man da aufgeschmissen.

Oft reicht es, beim Aufruf einer Methode den Namen der Methode und die Parameter mitausgeben zu lassen, ausführlicher wenn man beim Beenden des Ausrufes noch einen Status zurückgibt, oder gar in Schleifen aktuelle Werte loggt, natürlich nur falls geloggt werden soll, um die Performance zu schonen ;)

So ein Debuglog liest sich wie ein Drehbuch zum Auftritt eines Fehlers, so spart man sich meistens den Debugger ;)

Ansonsten ist es interessant zu sehen wie sich ein System zur Laufzeit mit nebenläufigen Zugriffen verhält.
 

byte

Top Contributor
Wieso kannst Du Anwendungen über einen App.Server nicht debuggen? Remote Debugging heisst das Stichwort in Eclipse. Jeder vernünftige App.Server (so auch JBoss) bietet entsprechende Hooks dafür an.
 
M

maki

Gast
Dein Link zeigt das Debuggen eines Servlets ;)
Bei einer EJB sieht es anders aus, es geht schon, ist allerdings nicht sinnvoll und kompliziert, kann/soll man ein "Managed Environment" einfach so anhalten?

Logging, das Protokollieren von Statusinformationen kann einiges mehr zur Fehlersuche beitragen als Debuggen in einer "künstlichen" Umgebung zu einem vollkommen anderen Zeitpunkt, auch schliessen sich die beiden nicht gegenseitig aus.

Je bessere Logging Infos ich zur Verfügung habe, umso weniger debugge ich, Logs lesen fällt mir einfacher als debuggen ;)
 
S

SlaterB

Gast
aber hey, als Debugger kann man eben bestimmte Produkte nicht einsetzen, die wandern in den Müll und fertig,
da bin ich lieber kein Debugger..
 

byte

Top Contributor
Kein Grund polemisch zu werden. :roll:
Ich habe nie behauptet, dass es nicht auf Fälle gibt, wo der Debugger versagt. In den meisten Fällen ist es halt nicht so, da bist Du (falls geübt) mit dem Debugger viel schneller. Wir können uns gerne mal zu einem Contest treffen: Fehlersuche Debugger vs Logging. :lol:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Log4J bei mehreren Modulen Java Basics - Anfänger-Themen 8
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
G log4j Java Basics - Anfänger-Themen 4
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
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
frager2345 optional notwendig? Java Basics - Anfänger-Themen 4
N Android Studio notwendig oder sinnvoll? Java Basics - Anfänger-Themen 7
B Schlüsselworte this - immer oder nur wenn wirklich notwendig? Java Basics - Anfänger-Themen 9
R Textlabel aus anderer Klasse ansprechen - Konstruktor notwendig? Java Basics - Anfänger-Themen 7
V wozu ist das 'L' beim long notwendig ? Java Basics - Anfänger-Themen 5
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 1
A Signierte Exe Datei funktioniert nicht mehr Java Basics - Anfänger-Themen 3
C my_table.setRowSelectionAllowed(true) funktioniert nicht; Java Basics - Anfänger-Themen 0
B Warum funktioniert die Lösung von CodeGym aber meine nicht? Java Basics - Anfänger-Themen 3
P Wo NUR (!) JRE v18 oder v21 herunterladen? Also nicht volles JDK Java Basics - Anfänger-Themen 1
J shuffle cards wird nicht ausgeführt. Java Basics - Anfänger-Themen 2
J JTextField -> CaretPos bei SelectionStart() setzten nicht bei SelectionEnd() Java Basics - Anfänger-Themen 20
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 45
I Webservice funktioniert nicht Java Basics - Anfänger-Themen 5
C Abbruch einer Schleife mit break, meine Übung funktioniert nicht richtig Java Basics - Anfänger-Themen 4
SarahXyy Ergebnisse stimmen nicht überein? Java Basics - Anfänger-Themen 11
thomas55 Erste Schritte Modul läuft in IntelliJ, nicht in NetBeans Java Basics - Anfänger-Themen 11
G Nicht ausführbares JAR, externe jars mit einbinden Java Basics - Anfänger-Themen 7
S Erstes Programm: Hallo Welt funktioniert nicht. Java Basics - Anfänger-Themen 3
O Obfuscateter Code lässt sich nicht ausführen? Java Basics - Anfänger-Themen 7
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
G Regex greift nicht richtig Java Basics - Anfänger-Themen 4
G JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
G JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
G JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
G .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26

Ähnliche Java Themen

Neue Themen


Oben