首页 文章

从log4j 1.2迁移到log4j2

提问于
浏览
2

我正在将我的应用程序从log4j 1.2迁移到log4j2-2.8.1版本 . 以下是 log4j.properties 文件中现有的1.x配置 .

log4j.appender.JSERRORFILE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.JSERRORFILE.File=${log4j.loglocation}/jserror.log
log4j.appender.JSERRORFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.JSERRORFILE.layout.ConversionPattern=%d %-5p %c - %m%n

log4j.logger.com.app.JavascriptLogger=ERROR,JSERRORFILE
log4j.additivity.com.app.JavascriptLogger=false

将此转换为等效的xml配置log4j2.xml:

<RollingFile name="JSERRORFILE" fileName="${log-path}/jserror.log">
<PatternLayout pattern="%d %-5p %c - %m%n" />
</RollingFile>

<Logger name="com.app.JavascriptLogger" level="ERROR" additivity="false">
<AppenderRef ref="JSERRORFILE"/>
</Logger>

转换后,我不断收到以下错误:

org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid

任何帮助,将不胜感激 .

1 回答

  • 0

    您需要告诉RollingFile appender何时进行翻转(触发策略)以及翻转的结果应该是什么样子 .

    如果要以某个固定间隔(TimeBasedTriggeringPolicy或CronTriggeringPolicy)进行翻转,则需要指定包含类似 SimpleDateFormat 的字符串的 filePattern . 如果要翻转以防止大文件(SizeBasedTriggeringPolicy),则需要指定包含 %ifilePattern .

    filePattern是您希望将旧(翻转)文件移动到的位置的相对路径或绝对路径 .

    例:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
      <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
          <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
          </PatternLayout>
          <Policies>
            <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
            <SizeBasedTriggeringPolicy size="250 MB"/>
          </Policies>
        </RollingFile>
      </Appenders>
      <Loggers>
        <Root level="error">
          <AppenderRef ref="RollingFile"/>
        </Root>
      </Loggers>
    </Configuration>
    

    上面cron expression每天发射一次 .

    有关详细信息和更多示例,请参阅用户手册的RollingFile appender section .

相关问题