java - 有没有正确的方法在 slf4j 中传递参数?

标签 java slf4j

我正在使用 slf4j 来跟踪信息。我的代码是

private static final Logger log = LoggerFactory.getLogger(ObjectTest.class);

log.trace("Time taken to store " + count
            + " objects of size " + size +  " is " + (time) + " msecs");

log.trace("Time taken to store {} objects of size {} is {} msecs",
        new Object[] { count, size, time });

log.trace("Time taken to store {} objects of size {} is {} msecs",
        count, size, time);

这将是记录跟踪的首选机制。

最佳答案

3 是最好的。

3 和 2 生成相同(或几乎相同)的字节码,但 3 更容易输入且更短,因此 3 优于 2。

如果不启用跟踪,则 1 必须执行字符串连接(“存储时间”+ count + ....),这有点昂贵,而 2 仅在启用跟踪时才进行字符串连接,这就是为什么 3优于 1。

关于java - 有没有正确的方法在 slf4j 中传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7102339/

相关文章:

java - Logback:如何将日志目录从 "tomcat/bin"更改为与应用程序相关?

java - 如何向 GUI 添加一个 "console"之类的窗口?

java - jdbcTemplate 为 null 并抛出空指针异常

java - urlFetch、Servlet 和线程

java - 在 java.time (Java 8) 中正确地将时间转换为毫秒

java - 使用 SLF4J 记录异常时,Sonarcloud 会发出警报 "not enough arguments"

java - 在运行时读取所有用特定注解装饰的类

java - 大同记录 : specifying which timezone to use for logs

logging - LoggerFactory 与 Logger

java - slf4j 日志记录 - 两种错误日志记录方法之间的差异(带和不带 Throwable)