Java日志记录框架-支持printf()



在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

最新更新