I am using log4j2 and using log4j2.xml for its configuration. I am configuring the PatternLayout
and its pattern currently is %d [%t] %p %c - %m%n
. It is the same value as PatternLayout.SIMPLE_CONVERSION_PATTERN
defined in log4j2 core Javadoc. So is it possible to reference this variable instead of copy the value into the xml?
My full log4j2.xml is attached for your reference.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="consoleAppender" target="SYSTEM_OUT">
<PatternLayout pattern="%d [%t] %p %c - %m%n" />
</Console>
</Appenders>
<Loggers>
<Root level="ALL">
<AppenderRef ref="consoleAppender" />
</Root>
</Loggers>
</Configuration>
You have at least the following choices:
<PatternLayout pattern="${env:MY_PATTERN}" />
. And define the variable before the logger is initialized, with: System.setProperty("MY_PATTERN",PatternLayout.SIMPLE_CONVERSION_PATTERN)
. Or, if you need the pattern to be defined at runtime based on some conditions, you can define your own Logger
class with a custom appender, something like (this is using the file appender, but you will get the idea):
public class MyLogClass { private static Logger log = Logger.getLogger(MyLogClass.class); private static boolean initFlag = false; private static void initLogger(){ log.setLevel(Level.DEBUG); DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); Date date = new Date(); RollingFileAppender appender = new RollingFileAppender(); appender.setAppend(true); appender.setMaxFileSize("1MB"); appender.setMaxBackupIndex(1); appender.setFile("my_log_file-" + dateFormat.format(date) + ".log"); PatternLayout layOut = new PatternLayout(); layOut.setConversionPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN); appender.setLayout(layOut); log.addAppender(appender); } public static Logger getLogger(){ if(initFlag == false){ initLogger(); initFlag = true; return MyLogClass.log; } else { return MyLogClass.log; } } }
Then use it like:
LogClass.getLogger().debug("test");
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.