特に例外やその他の問題を追跡する場合に、Java アプリケーションで役立つシステム情報はどれですか?
例外、Java/OS 情報、メモリ/オブジェクト消費量、io 情報、環境/エンコーディングなどの詳細について考えています。
特に例外やその他の問題を追跡する場合に、Java アプリケーションで役立つシステム情報はどれですか?
例外、Java/OS 情報、メモリ/オブジェクト消費量、io 情報、環境/エンコーディングなどの詳細について考えています。
明らかな(例外スタックトレース)に加えて、取得できる情報が多いほど優れています。したがって、すべてのシステムプロパティと環境変数を取得する必要があります。また、アプリケーションにいくつかの設定がある場合は、それらのすべての値を取得します。もちろん、このすべての情報をログファイルに入れる必要があります。簡単にするために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));
}
ほとんどの場合、これは「多すぎる」情報になりますが、ほとんどの場合、スタックトレースで十分です。難しい問題が発生したら、「余分な」情報がすべて揃っていることに満足します。
すべての JVM に存在することが保証されているプロパティが記載されているJavadoc をSystem.getProperties()
確認してください。
純粋な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")
さらに、Javaサーブレットアプリケーションの場合:
response.getCharacterEncoding()
request.getSession().getId()
request.getRemoteHost()
request.getHeader("User-Agent")
pageContext.getServletConfig().getServletContext().getServerInfo()
私が本当に役立つことの1つは、クラスがどこからロードされているかを確認することです。
obj.getClass()。getProtectionDomain()。getCodeSource()。getLocation();
注:protectiondomainはコードソースと同様にnullになる可能性があるため、必要なnullチェックを実行してください