我应该使用slf4j isTraceEnabled吗?

时间:2014-01-22 11:00:22

标签: java scala slf4j

如果我在启用跟踪的情况下打印大量数据,那么我应该使用isTraceEnabled还是只执行我的log.trace("{} mymessage", "param") 在这种情况下,使用isTraceEnabled或没有任何好处会有任何好处吗?

2 个答案:

答案 0 :(得分:5)

这取决于"param"实际上是什么。如果它是一个复杂的表达式,最好使用isTraceEnabled。如果它只是对象的引用,则可以直接使用它。只有在启用跟踪时才会调用其toString方法。

如果连续有多个跟踪语句,则使用isTraceEnabled也很有用。你可以将它们放在同一个if中。

答案 1 :(得分:1)

虽然Henry的答案是正确的,但我想补充一点,trace无论如何都必须有效地调用isTraceEnabled,所以当isTraceEnabled调用trace时实际上存在(非常小的)缺点不是有用(即您不需要通过非平凡的表达式构造参数,并且只有一个{{1}}调用)。