在c中,printf()
确实很容易使用,在Java中System.out.printf()
也很神奇,但在log4j
中,似乎只能使用"First name: "+ firstName +", Age: " + age
,这很不舒服。
问题是:
- 阻碍
log4j
实现这样一个功能的困难是什么 - 什么日志框架支持这样的功能,你能举一个简短的例子吗;Java代码
您可以使用org.slf4j.Logger
,为提供了一种以这种方式格式化log
的方法。
例如,
LOGGER.info("Roll number of Student {} is {}.", studentName, rollNumber);
您可以使用字符串的格式方法,如:
logger.info(String.format("Student %s with roll number %d found!", studentName, rollNumber));
除了其他人讨论的参数化日志之外,Log4j 2还支持
LOGGER.printf(Level.INFOR,format,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