2010-07-28 16 views
7

¿Qué información del sistema es útil, especialmente al rastrear una excepción u otros problemas, en una aplicación java?¿Cómo recuperar información útil del sistema en Java?

estoy pensando en detalles acerca de excepciones, Java/información de sistema operativo, los consumos de memoria/objeto, la información, el medio ambiente io/enchodings etc.

Respuesta

0

para aplicaciones Java puro:

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

¿Quizás System.getProperties(). List para obtener todos? –

2

Además de las obvias - el seguimiento de pila de excepción - el más información que puede obtener es mejor. Por lo tanto, debe obtener todas las propiedades del sistema y las variables de entorno. Además, si su aplicación tiene algunas configuraciones, obtenga todos sus valores. Por supuesto, usted debe poner toda esta información en su archivo de registro, solía System.out ella por simplicidad:

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

Para la mayoría de los casos esto será "demasiado" información, pero para la mayoría de los casos será el seguimiento de la pila suficiente. Una vez obtendrá un tema difícil que será feliz que usted tiene toda esa información "extra"

+0

mediante la ejecución de este código consigo muchas líneas de palabras clave y su valor. En esto tengo Doubt sobre la clave de trabajo 'sun.java.command'. ¿Para qué sirve esta palabra clave y estoy buscando algo que imprima, Windows Workstation/Session/Screen lock y tiempo de desbloqueo? –

0

Además, para aplicaciones Java Servlet:

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

Una cosa que realmente me ayuda a ver de dónde se cargan mis clases.

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

nota: ProtectionDomain puede ser nulo como fuente de código puede también lo hacen las comprobaciones necesarias nulos

Cuestiones relacionadas