Log4J 支持在日志消息中插入运行时变量
PropertyPatternConverter
PropertyPatternConverter
允许你在日志消息中插入 Java 系统属性。你可以在 Log4J 配置文件中使用 %p
或 %P
转换符来引用系统属性。
例如,以下 Log4J 配置将打印出当前 Java 版本:
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="Java Version: %p"/>
</layout>
</appender>
<root>
<level value="info"/>
<appender-ref ref="console"/>
</root>
env
关键字从 Log4J 2.7 开始,你可以使用 env
关键字来引用环境变量。你可以在 Log4J 配置文件中使用 %env{VAR_NAME}
转换符来引用环境变量。
例如,以下 Log4J 配置将打印出 PATH
环境变量的值:
<appender name="console" class="org.apache.logging.log4j.core.appender.ConsoleAppender">
<layout class="org.apache.logging.log4j.core.layout.PatternLayout">
<Pattern>PATH: %env{PATH}</Pattern>
</layout>
</appender>
<root>
<level value="info"/>
<appender-ref ref="console"/>
</root>
ThreadContext
ThreadContext
允许你在日志消息中插入线程局部变量。你可以使用 ThreadContext.put()
方法设置变量,然后在 Log4J 配置文件中使用 %X{VAR_NAME}
转换符来引用它们。
例如,以下代码片段设置了线程局部变量 userId
:
import org.apache.logging.log4j.ThreadContext;
public class MyClass {
public void myMethod() {
ThreadContext.put("userId", "123");
// ...
}
}
然后,在 Log4J 配置文件中,你可以使用 %X{userId}
转换符来引用该变量:
<appender name="console" class="org.apache.logging.log4j.core.appender.ConsoleAppiewAppender">
<layout class="org.apache.logging.log4j.core.layout.PatternLayout">
<Pattern>User ID: %X{userId}</Pattern>
</layout>
</appender>
<root>
<level value="info"/>
<appender-ref ref="console"/>
</root>
MDC
(Mapped Diagnostic Context)MDC
是 ThreadContext
的一个子类,它提供了一种更结构化的方法来存储和检索线程局部变量。你可以使用 MDC.put()
方法设置变量,然后在 Log4J 配置文件中使用 %X{VAR_NAME}
转换符来引用它们。
例如,以下代码片段设置了 MDC 变量 userId
:
import org.apache.logging.log4j.MDC;
public class MyClass {
public void myMethod() {
MDC.put("userId", "123");
// ...
}
}
然后,在 Log4J 配置文件中,你可以使用 %X{userId}
转换符来引用该变量:
<appender name="console" class="org.apache.logging.log4j.core.appender.ConsoleAppiewAppender">
<layout class="org.apache.logging.log4j.core.layout.PatternLayout">
<Pattern>User ID: %X{userId}</Pattern>
</layout>
</appender>
<root>
<level value="info"/>
<appender-ref ref="console"/>
</root>
通过这些方法,你可以在 Log4J 日志消息中插入运行时变量。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云