通过在 log4j2.xml 或 log4j2.properties 文件中使用 ThreadContext 和模式,获得了预期的输出。请找到下面的代码。
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<!-- Console Appender -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L %X{param1} %X{param2} %X{param3} - %m%n" />
</Console>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
或
log4j2.properties
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L %X{param1} %X{param2} %X{param3} - %m%n
和
在 JAVA 文件中
package com.test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ThreadContext;
public class Test {
public static void ThreadContextLoggerCreation(long param1, String param2, String param3) {
ThreadContext.push(UUID.randomUUID().toString()); // Add the fishtag;
ThreadContext.put("param1", param1);
ThreadContext.put("param2", param2);
ThreadContext.put("param3", param3);
ThreadContext.pop();
}
public static void ThreadContextLoggerClear() {
ThreadContext.clearAll();
}
public static void main(String args[]) {
Logger logger = LogManager.getLogger(Test.class); LogUtil.ThreadContextLoggerCreation(logger,currentTime,customerId,agentLocation,streamId,streamVariant,levelOfDetail);
logger.info("Current Time of execution(HHmm) is: {}",BatchTimeUtil.convertTimestampToReadableDate(currentTime));
}
}