在java應用程序中,哪些系統信息非常有用 - 尤其是在追查異常或其他問題時?如何在java中檢索有用的系統信息?
我正在考慮有關異常,JAVA/OS信息,內存/對象消耗,IO信息,環境/ enchodings等
在java應用程序中,哪些系統信息非常有用 - 尤其是在追查異常或其他問題時?如何在java中檢索有用的系統信息?
我正在考慮有關異常,JAVA/OS信息,內存/對象消耗,IO信息,環境/ enchodings等
純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));
}
在大多數情況下,這將是「太多」的信息,但大多數情況下,堆棧跟蹤會足夠。一旦你將得到一個棘手的問題,你會很高興,你有所有的「額外」信息
通過運行此代碼我得到許多關鍵字行和它們的值。在這個問題上,我對「sun.java.command」的重要工作產生懷疑。這個關鍵詞有什麼用,我正在尋找打印的東西,windows工作站/會話/屏幕鎖定和解鎖時間。 – 2012-04-19 11:47:52
此外,Java Servlet的應用:
response.getCharacterEncoding()
request.getSession().getId()
request.getRemoteHost()
request.getHeader("User-Agent")
pageContext.getServletConfig().getServletContext().getServerInfo()
查看Javadoc for System.getProperties()
,其中記錄了每個JVM中保證存在的屬性。
有一件事情能真正幫助我 - 看看我的類從哪裏加載。
obj.getClass()。getProtectionDomain()。getCodeSource()。getLocation();
注意:protectiondomain可以爲空,因爲可以代碼源所以做所需的空檢查
也許System.getProperties()。列表來獲得所有這些? – 2010-07-28 13:13:02