2010-07-28 2 views
7

Какая системная информация полезна - особенно при отслеживании исключения или других проблем - в приложении Java?Как получить полезную системную информацию в java?

Я имею в виду подробности о исключениях, Java/информации зева, память/объекте потреблениях, Ио информации, окружающую среде/enchodings т.д.

ответ

0

Для чистых Java-приложения:

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

Может быть, System.getProperties(). List, чтобы получить все из них? –

2

Кроме очевидного - стек исключения след - тем больше информации вы можете получить лучше. Таким образом, вы должны получить все свойства системы, а также переменные среды. Также, если ваше приложение имеет некоторые настройки, получите все свои значения. Конечно, вы должны поместить всю эту информацию в файл журнала, я использовал System.out ее для простоты:

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

В большинстве случаев это будет «слишком много» информации, но в большинстве случаев трассировки стека будет достаточно. После того, как вы получите жесткий вопрос, вы будете счастливы, что у вас есть все, что «лишние» данные

+0

, запустив этот код, я получаю много строк ключевых слов и их значения. В этом я сомневаюсь в ключевой работе 'sun.java.command'. Каково использование этого ключевого слова, и я ищу что-то, что печатает, блокирует рабочую станцию ​​/ сеанс/экран Windows и время разблокировки. –

0

Кроме того, для сервлетов Java-приложений:

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

Одна вещь, которая действительно помогает мне узнать, откуда мои классы загружаются.

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

Примечание: protectiondomain может быть пустым, как исходный код может так сделать необходимые нулевые чеки