2010-07-28 13 views
7

Quali informazioni di sistema sono utili - specialmente quando si traccia un'eccezione o altri problemi in basso - in un'applicazione java?Come recuperare informazioni utili sul sistema in java?

Sto pensando di dettagli sulle eccezioni, Java/informazioni os, i consumi di memoria/oggetto, le informazioni io, l'ambiente/enchodings ecc

risposta

0

per le applicazioni Java puri:

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

Forse System.getProperties(). Lista per ottenerli tutti? –

2

A parte l'ovvio - l'analisi dello stack eccezione - più informazioni si può ottenere è meglio. Quindi dovresti ottenere tutte le proprietà del sistema e le variabili di ambiente. Inoltre, se la tua applicazione ha alcune impostazioni, ottieni tutti i loro valori. Ovviamente si deve mettere tutte queste informazioni nel file di registro, ho usato il suo System.out per semplicità:

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)); 
} 

Per la maggior parte dei casi questo sarà "troppo" informazioni, ma per la maggior parte dei casi l'analisi dello stack sarà abbastanza. Una volta che si ottiene un problema di difficile sarete felici di avere tutte quelle informazioni "extra"

+0

eseguendo questo codice ottengo molte linee di parole chiave e il loro valore. In questo ho Dubbio sul lavoro chiave 'sun.java.command'. Qual è l'uso di questa parola chiave e sto cercando qualcosa che stampi, Windows Workstation/Session/Screen lock e sblocchi il tempo. –

0

Inoltre, per le applicazioni Java Servlet:

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

Una cosa che mi aiuta davvero a vedere da dove vengono caricate le mie lezioni.

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

nota: protectiondomain può essere nullo come fonte di codice può così fanno i necessari controlli nulli

Problemi correlati