Java Logging/Debug Tools?

Umlüx

Lt. Junior Grade
Registriert
Apr. 2006
Beiträge
450
Hallo!

Ich suche ein Tool um Java Prozesse zu überwachen und Logfiles mitzuschreiben. Wir hatten es bisher mit der jconsole versucht, die liefert zwar nette Grafiken, aber anscheinend kein automatisches logging... Und sobald der überwachte Java Prozess crasht, verliert die jconsole natürlich die Verbindung und damit das meiste ihrer Funktionalität.

Ps: ich selber bin kein Java Entwickler, ich muss nur einer Firma helfen, ihre Software zu debuggen....

Danke!
 
Die Applikation schreibt normalerweise selbst das Log.

Wenn du mehr Informationen über den Gesundheitszustand der Applikation benötigst, kann eine Monitoring Lösung helfen. Dynatrace zB erlaubt das automatische Monitoring von Java Prozessen (und vieles mehr) ohne dass die Applikation geändert werden muss. Auch kann man sie live debuggen.

Es gibt eine kostenlose 15 Tage Testversion, danach kann man verschiedene Verträge abschließen.
 
Was ist das denn für eine Java App? Auf einem (Desktop) Client? Oder auf einem Server, in einem Container, oder auf K8s?

Idealerweise nutzt man die Monitoring/Logging Funktionen der Umgebung.
 
Logging: slf4j ist eine logging facade (im code logged man was man will)
zur laufzeit funktioniert es mit allen üblichen loggern: java logging, log4j etc

für detailiertere überwachung: https://opentelemetry.io/docs/languages/java/

Das ist ein offener Standard - wird von allen Möglichen Tools/ Frontend /Infrastrukturen unterstützt.

Wenn es eine alte Anwendung ist sollte immer JMX funktionieren - damit überwacht man klassisch Java Anwendungen. Das läuft immer. Was man sieht hängt von der Anwendung ab
 
Es ist eine (eigentlich aktuelle) VoIP Software die auf einem Windows Desktop läuft und immer wieder crasht. Und da der Anbieter aber nicht gleich der Entwickler ist, spielen wir inzwischen schon seit Tagen stille Post.. Ich wollte daher Eigeninitiative ergreifen und gleich möglichst ausführliche Infos liefern.

Danke für die Vorschläge!
 
Wie wird die Software gestartet?
*.exe, *.jar, ... ?
Was sagt der Task Manager?

Ich frage deshalb, weil es schon sinnvoll sein kann, das Programm mit java.exe anstatt javaw.exe zu starten, einfach nur um zu sehen, ob im stderr oder stdout was drin steht...
 
  • Gefällt mir
Reaktionen: CyborgBeta
ChatGPT liefert dazu interessante Ansatzpunkte:

Ja, es gibt verschiedene Möglichkeiten, die von der JVM gesammelten Statistiken und Informationen über die Laufzeitleistung und die Ausführung deines Java-Programms zu sehen. Hier sind einige Ansätze:

### 1. JConsole
JConsole ist ein Java Management Console, mit dem du die Leistung von Java-Anwendungen überwachen kannst. Du kannst JConsole verwenden, um verschiedene Metriken wie den Speicherverbrauch, die Threads, die CPU-Auslastung und die Garbage Collection zu überwachen.

#### So verwendest du JConsole:
  • Starte deine Java-Anwendung mit dem -Dcom.sun.management.jmxremote-Flag.
  • Öffne JConsole (es befindet sich im bin-Verzeichnis von deinem JDK).
  • Wähle den Prozess der laufenden Java-Anwendung aus und halte die Statistiken im Auge.

### 2. Java Mission Control (JMC)
Java Mission Control ist ein umfangreiches Toolset für die Analyse und Überwachung von Java-Anwendungen. Es bietet erweiterte Funktionalitäten, einschließlich der Analyse von Profiling-Daten und der Überwachung der Performance.

#### So verwendest du JMC:
- Starte deine Java-Anwendung mit den Flags:
Code:
  -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
- Nach dem Start kannst du mithilfe von JMC auf die Daten des Flight Recorders zugreifen, um detaillierte Einblicke in die Performance zu erhalten.

### 3. JVM-Argumente
Du kannst JVM-Argumente verwenden, um Profiling-Informationen zu sammeln. Zum Beispiel:

  • -XX:+PrintCompilation: Diese Option gibt Informationen zu den von der JVM kompilierten Methoden aus.
  • -XX:+UnlockDiagnosticVMOptions -XX:PrintAssembly: Diese Option zeigt den Assembler-Code für bestimmte Methoden an (benötigt allerdings Kenntnisse in Assemblersprachen).

### 4. Profiling-Tools
Es gibt auch spezielle Profiling-Tools von Drittanbietern, die in deine Anwendung integriert werden können, um eine detaillierte Analyse der Laufzeit zu ermöglichen, wie z.B.:

  • VisualVM: Ein kostenloses Tool, das mit dem JDK geliefert wird, um die Leistung von Java-Anwendungen zu überwachen und zu profilieren.
  • YourKit: Ein kommerzielles Profiling-Tool, das umfassende Leistungsanalysen bietet.

Diese Tools und Ansätze können dir wertvolle Einblicke in die Run-Zeit-Statistiken deiner Java-Anwendung geben und helfen, Engpässe und Optimierungsmöglichkeiten zu identifizieren. Wenn du weitere Fragen zu einem bestimmten Tool hast, lass es mich wissen!
 

Ähnliche Themen

Zurück
Oben