是否可以在PatternLayout
配置文件中定义(命名)log4j2.xml
?
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR">
<appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
</Console>
<File name="DEBUG_FILE" fileName="debug.txt">
<PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
</File>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
</root>
</loggers>
</configuration>
在此示例中,重复PatternLayout
。我可以用名称以某种方式全局定义它,然后只使用名称引用来设置每个appender的模式吗?
答案 0 :(得分:14)
根据官方documentation,你可以定义一个&#34;属性&#34;并重用其价值。
在这种情况下,我定义了appenderPatternLayout
属性。
这里是完整代码(使用Log4J 2.3测试):
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="appenderPatternLayout">%d %-5p %C{2} (%F:%L) - %m%n</Property>
</Properties>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="${appenderPatternLayout}" />
</Console>
<File name="DEBUG_FILE" fileName="debug.txt">
<PatternLayout pattern="${appenderPatternLayout}" />
</File>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="CONSOLE" />
<AppenderRef ref="DEBUG_FILE" />
</Root>
</Loggers>
</Configuration>
答案 1 :(得分:2)
找到它:
定义:
<Properties>
<property name="path">c:/logs/</property>
</Properties>
使用:
<RollingFile fileName="${path}mylog.log"