2010-07-28 7 views
7

Welche Systeminformationen sind nützlich - vor allem, wenn eine Ausnahme oder andere Probleme festgestellt werden - in einer Java-Anwendung?Wie nützliche Systeminformationen in Java abrufen?

ich über Details zu Ausnahmen denke, java/o Informationen, Speicher/Objekt Verbräuche, io Information, Umwelt/enchodings usw.

Antwort

0

Für reine Java-Anwendungen all diese „extra“ Informationen haben:

System.getProperty("org.xml.sax.driver") 
System.getProperty("java.version") 
System.getProperty("java.vm.version") 
System.getProperty("os.name") 
System.getProperty("os.version") 
System.getProperty("os.arch") 
+3

Vielleicht System.getProperties(). Liste, um alle von ihnen zu bekommen? –

2

Neben dem offensichtlichen - das Ausnahme-Stack-Trace - je mehr Informationen, die Sie erhalten können, sind besser. Sie sollten also alle Systemeigenschaften sowie Umgebungsvariablen erhalten. Auch wenn Ihre Anwendung einige Einstellungen hat, erhalten Sie alle ihre Werte. Natürlich sollten Sie all diese Informationen in der Protokolldatei setzen, benutzte ich System.out sie der Einfachheit halber:

System.out.println("----Java System Properties----");  
System.getProperties().list(System.out); 

System.out.println("----System Environment Variables----"); 
Map<String, String> env = System.getenv(); 
Set<String> keys = env.keySet(); 
for (String key : keys) { 
    System.out.println(key + "=" + env.get(key)); 
} 

Für den meisten Fällen „zu viel“ Information sein wird, aber in den meisten Fällen wird der Stack-Trace sein genug. Sobald Sie ein hartes Problem bekommen werden Sie froh sein, dass Sie

+0

durch Ausführen dieses Codes ich viele Zeilen von Schlüsselwörtern und deren Wert zu erhalten. Darin habe ich Zweifel an der Schlüsselarbeit 'sun.java.command'. Was ist die Verwendung dieses Schlüsselwortes und ich suche nach etwas, das drucken, Windows Workstation/Session/Bildschirm sperren und entsperren Zeit. –

0

Darüber hinaus sind für Java-Servlet-Anwendungen:

response.getCharacterEncoding() 
request.getSession().getId() 
request.getRemoteHost() 
request.getHeader("User-Agent") 
pageContext.getServletConfig().getServletContext().getServerInfo() 
0

Eine Sache, die mir wirklich hilft zu sehen, wo meine Klassen geladen werden.

obj.getClass(). GetProtectionDomain(). GetCodeSource(). GetLocation();

Anmerkung: protectiondomain kann als Dosen Quellcode null sein, so tun die benötigten null Kontrollen