Log4j2:多个记录器的一个通用参数化附加器[类型:RollingFile]

时间:2016-12-28 09:16:16

标签: logging log4j2 rollingfileappender

逗人, 我有问题,我有很多服务在不同的日志文件中写入相同的日志级别。 我从互联网上得到的东西,我需要根据服务的数量创建appender和logger。 现在,我的问题是,我可以制作一个通用的parmeterized appender用于多个记录器吗?我需要appender中的参数来指定日志文件名及其路径。 以下用于定义appender的xml片段:

<Appenders>
    <RollingFile name="RollingFile-Appender"
                 fileName="${log-path}/{This one based on service}.log"
                 filePattern="${log-path}/{This one based on service}/{This one based on service}_%d{yyyy-MM-dd}.log">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
            <Policies>
                 <OnStartupTriggeringPolicy />
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="${fileSize}" />
            </Policies>
        <DefaultRolloverStrategy>
            <Delete basePath="${log-path}/{This one based on service}" maxDepth="1">
              <IfFileName glob="{This one based on service}*.log">
                <IfAny>
                  <IfAccumulatedFileSize exceeds="500 MB" />
                  <IfAccumulatedFileCount exceeds="3" />
                </IfAny>
              </IfFileName>
        </Delete>
        </DefaultRolloverStrategy>
    </RollingFile>  
</Appenders>

提前致谢。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用RoutingAppender登录多个日志文件,甚至动态创建日志文件。通常人们使用上下文映射作为路由规则。

有关示例,请参阅manual page和Log4j2 FAQ page