如何为log4j2定义全局PatternLayout?

时间:2014-01-07 14:54:30

标签: java logging log4j2

是否可以在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的模式吗?

2 个答案:

答案 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"