日志文件中有很多堆栈跟踪不是很糟糕吗?
我的意思是,您可以查看是否有问题 - 您可以查看它的来源。
但是性能呢?对于具有这种日志记录格式的应用程序来说,情况会有多糟糕?
在普通记录器中,如何在有和没有堆栈跟踪的日志之间切换系统?通过日志级别?
日志文件中有很多堆栈跟踪不是很糟糕吗?
我的意思是,您可以查看是否有问题 - 您可以查看它的来源。
但是性能呢?对于具有这种日志记录格式的应用程序来说,情况会有多糟糕?
在普通记录器中,如何在有和没有堆栈跟踪的日志之间切换系统?通过日志级别?
在日志文件中包含堆栈跟踪通常会更好——这样会更容易找到问题代码。
如果您只对堆栈跟踪生成性能感兴趣 - 我写了一篇关于在 Java 中引发异常需要多长时间的文章。大部分时间都被堆栈跟踪生成所消耗: 在Java中抛出异常非常慢
我可以假设您正在谈论在挂钟时间中断上触发的堆栈跟踪吗?这些对于定位性能问题很有价值。(如果它们包含发生调用的行号信息,而不仅仅是函数/方法名称,则它们更有价值。)
但是,它们只有在您可以检查它们时才有价值,而且您无法检查数百万个它们,因此以接近高频的方式获取它们没有任何价值。几乎任何大到值得修复的性能问题都可以在 20 个或更少的堆栈样本中找到,前提是它们是在您关心的整个执行阶段随机抽取的。许多人发现这个数字令人惊讶,但这是数学。
原则上,如果你有一个统计总结器,你可以使用更多它们,就像Zoom profiler 一样,但实际上你可以手动做得更好,因为你的大脑比任何统计数据都能更好地识别浪费的处理。