我应该使用slf4j isTraceEnabled吗?

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

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

如果isTraceEnabled有多个跟踪语句,则使用isTraceEnabled也很有用。 if那么你可以把它们放进去。

虽然Henry的答案是正确的,但我想补充一点, trace实际上无论如何都必须调用isTraceEnabled ,因此当它isTraceEnabled时调用isTraceEnabled实际上有一个(非常小的)缺点(即你不需要构造参数)通过非平凡的表达式,你只有一个trace调用)。