我刚开始研究Log4j 2.0。看一下用户指南,看起来已经实现了一些新的东西,我现在对我应该使用的时候有点困惑。主要的例子是Flow Logging。
public class LogTest {
public static void main(final String[] args) {
logger.entry();
doTest("value");
try {
doTest(null);
}
catch (final Exception e) {
logger.catching(e);
}
logger.exit();
}
private static void doTest(final String value) {
logger.entry();
if (value == null) {
final Exception e = new IllegalArgumentException(
"value must not be null");
throw logger.throwing(e);
}
System.out.println(value);
logger.exit();
}
}
我的问题是,我是否以预期的方式使用logger.throwing()和logger.catching()?
答案 0 :(得分:3)
是的,看起来是正确的。请注意,如果您在许多地方使用entry()
和exit()
,则除非您在模式布局中启用位置信息(使用%位置等),否则很难区分生成的消息。这会产生重大的性能影响,所以要小心。
至于catching()
和throwing()
方法,您是否喜欢这些方法logger.error(throwable);
可能是一种品味问题。