使用Log4j 2记录约定

时间:2014-05-05 04:42:09

标签: java logging log4j log4j2

我刚开始研究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()?

1 个答案:

答案 0 :(得分:3)

是的,看起来是正确的。请注意,如果您在许多地方使用entry()exit(),则除非您在模式布局中启用位置信息(使用%位置等),否则很难区分生成的消息。这会产生重大的性能影响,所以要小心。

至于catching()throwing()方法,您是否喜欢这些方法logger.error(throwable);可能是一种品味问题。