>如果未设置消息工厂,则默认使用ParameterizedMessageFactory.
>默认情况下,log4j使用消息工厂进行参数化消息,因此您可以执行logger.warn(“hello {}”,user.getName());
>通过在获取记录器时调用LogManager.getLogger(name,messageFactory)来设置自己的工厂.
如果需要String.format类型的params(System.out.printf格式),可以使用LogManager.getLogger(MyClass.class,new StringFormatterMessageFactory())来获取记录器.
如果您最常见的用法是参数化消息({}格式),但如果您偶尔希望更多地控制字符串格式化程序提供的输出格式,则可以正常声明您的记录器(因此它使用{}参数化消息),以及使用Logger.printf方法.
例:
class MyClass {
private static Logger logger = LogManager.getLogger(MyClass.class);
public void someMethod() {
// use printf here to precisely control the number of digits displayed
logger.printf(Level.INFO, "pi: %.5f", Math.PI);
}
}
这都是代码.不涉及配置(XML或其他).