【问题标题】:How do I get bluemix logs to include stacktraces?如何让 bluemix 日志包含堆栈跟踪?
【发布时间】:2017-06-28 06:09:58
【问题描述】:

我们的代码只是使用 java.util.logging 来记录信息、错误等。然后我可以通过多种方式查看这些日志:

  1. cf 日志命令
  2. bluemix Web 控制台(日志聚合器)
  3. kibana 网页界面
  4. ssh 和 cat /home/vcap/logs/messages.log

如果我记录一条消息,它会到处出现。如果我记录一条消息并传递一个异常参数,则该消息会随处显示,但异常仅显示在 /home/vcap/logs/messages.log 中。异常和堆栈跟踪不会显示在 cf 日志、bluemix 控制台或 kibana 中。由于messages.log 文件的大小是有限的,并且不会在重新阶段中持续存在,因此我不能总是查看它来获取我需要的信息。

那么我怎样才能确保完整记录包括异常在内的完整日志消息?

【问题讨论】:

    标签: java ibm-cloud websphere-liberty


    【解决方案1】:

    默认情况下,messages.log 将只包含由日志组件写入或捕获的消息。 FFDC 日志(在每个应用程序的日志目录中)应该包含完整的堆栈跟踪。有关详细信息,请参阅 [1] 和 [2]:

    [1]https://console.bluemix.net/docs/runtimes/liberty/loggingAndTracing.html#logging_tracing

    [2]https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/rwlp_logging.html

    【讨论】:

    • 谢谢,但不幸的是,日志组件并未将我发送给它的所有内容都写入 message.log。示例:sLogger.log(Level.WARNING, "hello", new ServletException("这是一个捕获的异常。"));这将记录“hello”,但不会记录异常中的消息或堆栈。堆栈也没有写入 ffdc,因为它是一个捕获的异常。
    • 如果我不记录异常,而是让 Liberty 处理它,异常会很好地记录在 messages.log 中,但每个堆栈跟踪行在 Kibana 中显示为不同的条目(以及 Logs web ui )。这使得查找和读取异常变得非常困难。我不想依赖 ffdc 文件来获取堆栈,因为这意味着我们不能只监视 1 个文件,而且如果/当重新暂存该框时,它们将被删除。我期待 Kibana 成为阅读/存储/检索日志的最佳场所,但它们的格式不正确,我刚刚得知它们仅保留 7 天。
    • 其他人发现了和我一样的结果吗?使用其他日志库(log4j、slf4gj 等)是否有不同的行为。我们可以使用更好的日志同步吗?
    【解决方案2】:

    以下文章提供了特定于日志记录和跟踪的信息: https://www.ibm.com/support/knowledgecenter/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/rwlp_logging.html

    表 2 提供了有效的日志记录级别。查看此表并使用适当的日志级别在日志中获取您需要的信息。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-09-05
      • 2023-01-20
      • 2011-09-16
      • 2021-03-18
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多