通用记录方法

时间:2013-02-05 16:18:36

标签: java design-patterns

这是一件好事;通过这样的方法记录?

public static void log(final Object... messages) {
    logger.info(Joiner.on(',').useForNull("null").join(messages));
}

//在代码的其他部分,我们可以使用逗号而不是字符串连接来调用logger方法。请注意Joiner是番石榴类。

log(" Check ",obja.getXXX(),anotherObject.getMethod());

期望是干净的代码,方便和性能。

3 个答案:

答案 0 :(得分:4)

我使用SLF4J's Logger接口(带Logback实现),我觉得它更清晰。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test {
    private static final Logger logger = LoggerFactory.getLogger(Test.class);

    public void method(String name, int age, Address address) {
        logger.info("Person {}, age {} years old resides at {}", name, age, address);
    }
}

答案 1 :(得分:2)

您可能希望加入' '(空白)而不是逗号,但设计方法是个不错的主意。

性能方面,它并不理想。您可以创建一个额外的对象数组和一个连接器以及该连接器的内部缓冲区。

所以你可以用这种方法得到2分之3。如果您真的关心性能,请使用已使用类似方法的slf4j

答案 2 :(得分:2)

SLF4J的界面更好,就像其他答案一样。

我不明白这是如何改善性能的。也许OP有一个特定的用例,一些示例代码可以解释它。如果想要提前收集消息并将它们一起发送到日志方法调用,那么使用缓冲的appender可以更好地服务。