Java 如何让bluemix日志包含stacktraces?

Java 如何让bluemix日志包含stacktraces?,java,ibm-cloud,websphere-liberty,Java,Ibm Cloud,Websphere Liberty,我们的代码只是使用java.util.logging来记录信息、错误等。然后我可以通过多种方式查看这些日志: cflogs命令 bluemix web控制台(日志聚合器) kibana web用户界面 ssh和cat/home/vcap/logs/messages.log 如果我记录一条消息,它会显示在任何地方。如果我记录了一条消息并传递了一个异常参数,则该消息将显示在所有位置,但异常仅显示在/home/vcap/logs/messages.log中。异常和stacktrace不会显示在cf日志

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

  • cflogs命令
  • bluemix web控制台(日志聚合器)
  • kibana web用户界面
  • ssh和cat/home/vcap/logs/messages.log
  • 如果我记录一条消息,它会显示在任何地方。如果我记录了一条消息并传递了一个异常参数,则该消息将显示在所有位置,但异常仅显示在/home/vcap/logs/messages.log中。异常和stacktrace不会显示在cf日志、bluemix控制台或kibana中。由于messages.log文件的大小是有限的,并且不能跨re阶段持久化,因此我无法始终查看它以获取所需的信息


    那么,我如何才能确保包含异常的完整日志消息被完全记录

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

    [1]


    [2]

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

    [1]


    [2]

    以下文章提供了特定于日志记录和跟踪的信息:


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

    以下文章提供了特定于日志记录和跟踪的信息:


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

    谢谢,但不幸的是,日志组件没有将我发送给它的所有内容都写入message.log。示例:sLogger.log(Level.WARNING,“hello”,newServletException(“这是捕获的异常”);这将记录“hello”,但不会记录异常中的消息或堆栈。堆栈也不会写入ffdc,因为它是一个捕获的异常。如果我不记录该异常,而是让Liberty处理它,则异常会在messages.log中记录良好,但每个stacktrace行在Kibana(和Logs web ui)中显示为不同的条目。这使得查找和读取异常非常困难。我不想依赖ffdc文件来获取堆栈,因为这意味着我们不能只监视一个文件,而且如果盒子被重新暂存,它们将被删除。我原以为Kibana是阅读/存储/检索日志的最佳场所,但它们的格式不太好,我刚刚了解到它们只能保留7天。其他人有没有发现与我相同的结果?使用其他日志库(log4j、slf4gj等)是否有不同的行为。我们可以使用更好的日志同步吗?谢谢,但不幸的是,日志组件没有将我发送给它的所有内容都写入message.log。示例:sLogger.log(Level.WARNING,“hello”,newServletException(“这是捕获的异常”);这将记录“hello”,但不会记录异常中的消息或堆栈。堆栈也不会写入ffdc,因为它是一个捕获的异常。如果我不记录该异常,而是让Liberty处理它,则异常会在messages.log中记录良好,但每个stacktrace行在Kibana(和Logs web ui)中显示为不同的条目。这使得查找和读取异常非常困难。我不想依赖ffdc文件来获取堆栈,因为这意味着我们不能只监视一个文件,而且如果盒子被重新暂存,它们将被删除。我原以为Kibana是阅读/存储/检索日志的最佳场所,但它们的格式不太好,我刚刚了解到它们只能保留7天。其他人有没有发现与我相同的结果?使用其他日志库(log4j、slf4gj等)是否有不同的行为。我们是否可以使用更好的日志同步?