And*_*897 8 java configuration logging log4j log4j2
在Log4j2中,以下两者同样有效并且不会导致任何字符串连接的日志级别比DEBUG更具体?并且出于任何原因/情况会优先于其他原因吗?
log.warn(String.format("Number of cars : %d",carCount));
log.warn("Number of cars : {}",carCount );
Run Code Online (Sandbox Code Playgroud)
{}适用于任何类型的对象吗?
Rem*_*pma 17
该{}表示法比%s %dString格式表示法更有效.(有基准,我稍后会添加一些数字.)
该{}表示法接受任何对象或原始值,其中所述%s %d ...字符串格式要求的参数的类型的格式相匹配或抛出异常.所以一般来说,{}更方便.
在某些情况下,您希望使用String格式语法,因为它可以对格式进行非常精细的控制.如果你想"漂亮地打印"一个大数字1,234,567.123,或控制小数点后面的位数,那么{}还不够.
Log4j2允许您混合两种用法.可以在任何地方使用String格式语法(通过使用LogManager.getFormattedLogger),但也许更方便的是{}大多数时候使用默认格式,并且只在需要使用printf方法的细粒度控件时才使用String格式语法:
logger.printf(Level.INFO, "Logging in user %1$s with birthday %2$tm %2$te,%2$tY", user.getName(), user.getBirthdayCalendar());
Run Code Online (Sandbox Code Playgroud)
在内部,使用{}Log4j2格式可以避免创建字符串或其他临时对象.使用String格式语法无法做到这一点.
| 归档时间: |
|
| 查看次数: |
6120 次 |
| 最近记录: |