Java记录器使用...功能

Mag*_*Mag 6 java logging

Java logger允许以下语法:

m_logger.info("ID: {} NAME: {}", id, name);    // 1
m_logger.info("ID: " + id + " NAME: " + name); // 2
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,基本上我们调用...函数,因此Object[]每次都会创建一个new .

我跑过YourKit,这就是我所看到的.

我的问题是,第一种情况不是我们应该一直避免的昂贵操作吗?但是我已经在很多代码中看到了这一点.使用#1我们获得了什么?

我想我们应该使用StringBuilder最佳性能?

And*_*lko 5

m_logger.info("ID: {} NAME: {}", id, name);
Run Code Online (Sandbox Code Playgroud)

这是懒惰的论据评估.如果INFO关闭日志记录级别,则不会处理该字符串.其实,这不是什么大不了的构建new Object[n],n通常(=常)是< 5.

m_logger.info("ID: " + id + " NAME: " + name);
Run Code Online (Sandbox Code Playgroud)

每次都会构造此字符串.


Bor*_*vić 2

我的问题是,第一种情况不是我们应该一直避免的昂贵操作吗?

不,特别是在程序执行的宏伟计划中

使用 #1 我们能得到什么?f

可读性,有时第一种方法更容易作为代码阅读。生成的日志行是相同的

我想我们应该使用 StringBuilder 以获得最佳性能?

否: https: //stackoverflow.com/a/1532499/32090