将log4j 1.x转换为log4j 2.x自定义布局appender

时间:2016-09-20 12:19:19

标签: log4j2

<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.base}/logs/server.log" />
        <param name="Append" value="true" />
        <param name="DatePattern" value="'.'yyyy-MM-dd" />
        <layout class="com.mayank.base.logging.CustomPatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE}#%X{requestId} %R %-5p [%c{1}] - %m%n" />
        </layout>
    </appender>

我在将其转换为log4j时遇到问题2.如何添加自定义模式布局。

2 个答案:

答案 0 :(得分:0)

<RollingFile>标记应该存在。

以下是几个样本 -

<RollingFile name="ROLLING" 
             fileName="f:/my_dir/logsroll.log"
             filePattern="f:/my_dir/logsroll-%i.log">

OR

<RollingFile name="MyFile" fileName="d:/log/bsi/admin/total/totalLog.log"
            filePattern="d:/log/totalLog-%d{MM-dd-yyyy}-%i.log">
            <PatternLayout>
                <Pattern>%d %p %c [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="1 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="2000"/>
        </RollingFile>

请参阅this了解更多信息。

答案 1 :(得分:0)

您应该将CustomPatternLayout实现为Layout插件。你有一个代码示例(layout plugins manual)。

一般来说,你应该:

  • 在构造函数
  • 上使用适当的注释实现插件类
  • 实施插件工厂方法
  • 实施所需的格式
  • 在log4j配置中提及你的插件包:

    <Configuration packages="com.mayank.base.logging">
    
  • 在配置中使用插件类的名称

您可以在此博客post1post2post3上查看插件实施的解释和示例。没有布局插件示例,但技术非常相似。