Как получить полезную информацию о системе в Java?

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

Я думаю о деталях об исключениях, информации о Java/OS, потреблении памяти/объекта, io информация, environment/enchodings и т.д.

7
задан 4 revs, 2 users 100% 6 May 2012 в 03:56
поделиться

5 ответов

Для чистых приложений 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")
0
ответ дан 7 December 2019 в 16:38
поделиться

Помимо очевидного - трассировки стека исключений - чем больше информации вы можете получить, тем лучше. Таким образом, вы должны получить все системные свойства, а также переменные среды. Также, если в вашем приложении есть какие-то настройки, получите все их значения. Конечно, вы должны поместить всю эту информацию в свой файл журнала, я использовал 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));
}

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

2
ответ дан 7 December 2019 в 16:38
поделиться

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

response.getCharacterEncoding()
request.getSession().getId()
request.getRemoteHost()
request.getHeader("User-Agent") 
pageContext.getServletConfig().getServletContext().getServerInfo()
0
ответ дан 7 December 2019 в 16:38
поделиться

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

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

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

0
ответ дан 7 December 2019 в 16:38
поделиться

Посмотрите Javadoc для System.getProperties() который документирует свойства, которые гарантированно существуют в каждой JVM.

1
ответ дан 7 December 2019 в 16:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: