使用Play框架的默认记录器,我得到完整的例外情况'在play的应用程序日志中堆栈跟踪,并在控制台中显示相同堆栈跟踪的缩写版本。关于日志记录,我有三个基本问题:
在一个案例中,我觉得可能会遗漏一些信息。像... 3 common frames omitted
这样的东西实际上意味着什么,我能以某种方式配置以查看那些被省略的框架吗?
如何控制控制台是否显示完整的堆栈跟踪vs.部分一个v.s.只是一些没有堆栈跟踪的异常标题?
我可以用以下任何一个替换默认记录器,还是应该仅将这些记录器用于我自己的日志记录,但保持框架日志记录不变?将切换到那些记录器打破游戏的非阻塞性质? scala-logging,log4s,zero-log。
希望有了您的答案,我可以更专注于我的应用程序,而不是更多地关注日志记录基础架构,所以提前感谢!
答案 0 :(得分:3)
Logback(就像JRE一样)在打印堆栈跟踪时省略了常见的帧。请参阅JRE description of how frames are elided。
Play使用Logback。您可以更改配置。请查看logback layout docs和Play logging configuration docs。特别要注意xException
设置。
如果需要,您可以尝试使用TypeSafe的scala-logging框架。如果它与Logback或slf4j集成,那么它可能很适合Play。默认情况下,Play不使用Logback的异步appender(虽然可能应该这样做?)因此无需担心阻塞或非阻塞问题。