我有这个log4j2.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
<Appenders>
<File name="FILE" fileName="logfile.log" append="true">
<PatternLayout pattern="%p | [%t] %l | message : %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%p | [%t] %l | message : %m%n"/>
</Console>
</Appenders>
</Configuration>
我的目标是在RestEndpoint中添加一个与uuid唯一的id,但我不知道如何添加到xml文件......或者我必须在xml文件中配置它?
答案 0 :(得分:3)
在你的应用程序中,将uuid放在ThreadContext中:
ThreadContext.put("myUuid", new UUID());
我假设您知道应用程序中的入口点在哪里放置和删除它们。
在配置中,使用%X
模式转换器从ThreadContext中提取UUID :(还将Loggers添加到您的配置中)
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<File name="FILE" fileName="logfile.log" append="true">
<PatternLayout pattern="%p | [%t] %l | id: %X{myUuid} | message : %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%p | [%t] %l | id: %X{myUuid} | message : %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level ="trace">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="FILE" />
</Root>
</Loggers>
</Configuration>
答案 1 :(得分:0)
感觉还有另一个解决方案,如果您需要的只是每个日志记录的唯一ID,则更容易。在Log4j doc中检查UUID
唯一的更新是更改xml文件中的布局是添加%u{"RANDOM"}
。
示例xml配置
<PatternLayout>
<pattern>%d{DATE} [%p] UUID:%u{"RANDOM"} (%t) %c: %m%n</pattern>
</PatternLayout>