5

这是一件好事吗?通过这样的方法登录?

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

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

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

期望是干净的代码、便利性和性能。

4

3 回答 3

4

我使用SLF4J 的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);
    }
}
于 2013-02-05T16:22:59.103 回答
2

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

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

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

于 2013-02-05T16:22:28.717 回答
2

SLF4J 的界面更好,就像其他答案所说的那样。

我不明白这是如何提高性能的。也许 OP 有一个特定的用例,一些示例代码可以解释它。如果想法是预先收集消息并将它们一起发送到日志方法调用,那么使用缓冲的附加程序会更好。

于 2013-02-05T16:24:33.303 回答