如何使用 slf4j 在 Log4j2 中使用格式化消息

How to use formatted message in Log4j2 with slf4j

当在 slf4j 后面使用 Log4j2 时,是否可以使用 String.format 中的语法格式化日志消息?

好像标准的MessageFactoryParameterizedMessageFactory,只支持{}.

如果不访问本机记录器,您将无法做到这一点,但这最终会很混乱而且不是很有用。如果您真的想这样做,请参阅 this answer

您不能像使用 Log4j API 那样在每个 Logger 的基础上更改 MessageFactory。但是,您可以通过将 log4j2.messageFactory 设置为您要使用的 MessageFactory class 名称来更改默认 MessageFactory。您可以将其指定为系统 属性,也可以在 class 路径中找到的名为 log4j2.component.properties 的文件中定义 属性。

我建议您考虑使用 FormattedMessageFactory,因为它支持 String.format 模式、MessageFormat 模式和 ParameterizedMessage 模式(尽管不在同一消息中)。