【问题标题】:How to retrieve useful system information in java?如何在java中检索有用的系统信息?
【发布时间】:2011-03-22 03:35:07
【问题描述】:

在 Java 应用程序中哪些系统信息很有用 - 特别是在跟踪异常或其他问题时?

我正在考虑有关异常、java/os 信息、内存/对象消耗、io 信息、环境/编码等的详细信息。

【问题讨论】:

    标签: exception java system-properties system-information


    【解决方案1】:

    除了明显的异常堆栈跟踪之外,您可以获得的信息越多越好。因此,您应该获取所有系统属性以及环境变量。此外,如果您的应用程序有一些设置,请获取它们的所有值。当然,您应该将所有这些信息放入您的日志文件中,为了简单起见,我使用了 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 Workstation/Session/Screen lock and unlock time。
    【解决方案2】:

    查看Javadoc for System.getProperties(),其中记录了保证存在于每个 JVM 中的属性。

    【讨论】:

      【解决方案3】:

      对于纯 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.getProperties().list 来获取所有这些?
      【解决方案4】:

      此外,对于 java servlet 应用程序:

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

      【讨论】:

        【解决方案5】:

        真正帮助我的一件事是查看我的类是从哪里加载的。

        obj.getClass().getProtectionDomain().getCodeSource().getLocation();

        注意:protectiondomain 可以为 null,代码源也可以为 null,因此需要进行 null 检查

        【讨论】:

          猜你喜欢
          • 2017-06-19
          • 2020-05-24
          • 2021-07-17
          • 1970-01-01
          • 1970-01-01
          • 2018-11-22
          • 2018-09-26
          • 1970-01-01
          • 2012-02-02
          相关资源
          最近更新 更多