Java 日志框架 - 支持 printf()

Java logging framework - with printf() support

在c中,printf()确实好用,在Java中System.out.printf()也很神奇,但是在log4j中,好像只能用"First name: "+ firstName +", Age: " + age,很不舒服。

问题是:

您可以使用 org.slf4j.Logger,它 提供了 以这种方式格式化 log 的方法。

例如,

LOGGER.info("Roll number of Student {} is {}.", studentName, rollNumber);

您可以使用 String 的 format 方法,例如:

logger.info(String.format("Student %s with roll number %d found!", studentName, rollNumber));

除了其他人讨论的参数化日志记录之外,Log4j 2 还支持

LOGGER.printf(Level.INFOR, 格式, parm1);

参见http://logging.apache.org/log4j/2.x/manual/api.html#Mixing_Loggers_with_Formatter_Loggers

FWIW,Log4j 还支持使用符合 java.text.MessageFormat 和 java.util.Formatter.

的字符串进行日志记录

使用 log4j2 的LogManager.getFormatterLogger让它开心。

参见:http://logging.apache.org/log4j/2.x/manual/api.html#Formatting_Parameters

org.apache.logging.log4j.LogManager#getFormatterLogger