如何使用 slf4j 在 Log4j2 中使用格式化消息
How to use formatted message in Log4j2 with slf4j
当在 slf4j 后面使用 Log4j2 时,是否可以使用 String.format
中的语法格式化日志消息?
好像标准的MessageFactory
是ParameterizedMessageFactory
,只支持{}
.
如果不访问本机记录器,您将无法做到这一点,但这最终会很混乱而且不是很有用。如果您真的想这样做,请参阅 this answer。
您不能像使用 Log4j API 那样在每个 Logger 的基础上更改 MessageFactory。但是,您可以通过将 log4j2.messageFactory 设置为您要使用的 MessageFactory class 名称来更改默认 MessageFactory。您可以将其指定为系统 属性,也可以在 class 路径中找到的名为 log4j2.component.properties 的文件中定义 属性。
我建议您考虑使用 FormattedMessageFactory,因为它支持 String.format 模式、MessageFormat 模式和 ParameterizedMessage 模式(尽管不在同一消息中)。
当在 slf4j 后面使用 Log4j2 时,是否可以使用 String.format
中的语法格式化日志消息?
好像标准的MessageFactory
是ParameterizedMessageFactory
,只支持{}
.
如果不访问本机记录器,您将无法做到这一点,但这最终会很混乱而且不是很有用。如果您真的想这样做,请参阅 this answer。
您不能像使用 Log4j API 那样在每个 Logger 的基础上更改 MessageFactory。但是,您可以通过将 log4j2.messageFactory 设置为您要使用的 MessageFactory class 名称来更改默认 MessageFactory。您可以将其指定为系统 属性,也可以在 class 路径中找到的名为 log4j2.component.properties 的文件中定义 属性。
我建议您考虑使用 FormattedMessageFactory,因为它支持 String.format 模式、MessageFormat 模式和 ParameterizedMessage 模式(尽管不在同一消息中)。