Java 日志框架 - 支持 printf()
Java logging framework - with printf() support
在c中,printf()
确实好用,在Java中System.out.printf()
也很神奇,但是在log4j
中,好像只能用"First name: "+ firstName +", Age: " + age
,很不舒服。
问题是:
- 阻止
log4j
实现这样一个功能的困难是什么?
- 什么日志框架支持这样的功能,你能举一个包含 maven 依赖项和 Java 代码的简短示例吗?
您可以使用 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
在c中,printf()
确实好用,在Java中System.out.printf()
也很神奇,但是在log4j
中,好像只能用"First name: "+ firstName +", Age: " + age
,很不舒服。
问题是:
- 阻止
log4j
实现这样一个功能的困难是什么? - 什么日志框架支持这样的功能,你能举一个包含 maven 依赖项和 Java 代码的简短示例吗?
您可以使用 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