Как получить полезную системную информацию в Java?
Какая системная информация полезна - особенно при поиске исключений или других проблем - в Java-приложении?
Я думаю о деталях об исключениях, информации java/os, потреблении памяти / объекта, информации о io, окружении / кодировках и т. Д.
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")
Помимо очевидного - трассировки стека исключений - чем больше информации вы можете получить, тем лучше. Таким образом, вы должны получить все системные свойства, а также переменные среды. Также, если ваше приложение имеет некоторые настройки, получите все их значения. Конечно, вы должны поместить всю эту информацию в ваш лог-файл, я использовал 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));
}
В большинстве случаев это будет "слишком много" информации, но для большинства случаев будет достаточно трассировки стека. Как только вы получите сложную проблему, вы будете рады, что у вас есть вся эта "дополнительная" информация
Проверьте Javadoc дляSystem.getProperties()
который документирует свойства, которые гарантированно существуют в каждой JVM.
Одна вещь, которая действительно помогает мне - видеть, откуда загружаются мои занятия.
. Obj.getClass() getProtectionDomain() getCodeSource() getLocation()..;
примечание: домен защиты может быть нулевым, как и исходный код, поэтому выполните необходимые проверки на нулевое
Кроме того, для приложений Java-сервлетов:
response.getCharacterEncoding()
request.getSession().getId()
request.getRemoteHost()
request.getHeader("User-Agent")
pageContext.getServletConfig().getServletContext().getServerInfo()