从log4j 1.x迁移到log4j 2.12.1 [英] Migration from log4j 1.x to log4j 2.12.1

查看:0
本文介绍了从log4j 1.x迁移到log4j 2.12.1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当前将log4j 1.x升级到log4j 2.12.1,当我想启动该程序时,收到以下错误消息:

2020-10-15 10:44:38,092 main ERROR The parameter is null: filePattern
2020-10-15 10:44:38,094 main ERROR The parameter is null: policy
2020-10-15 10:44:38,095 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid: field 'filePattern' has invalid value 'null', field 'policy' has invalid value 'null'
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.injectFields(PluginBuilder.java:208)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:121)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:579)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:651)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:668)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:581)
        at com.AJAx.first.server.FirstServer.<clinit>(FirstServer.java:10)

2020-10-15 10:44:38,100 main ERROR The parameter is null: filePattern
2020-10-15 10:44:38,101 main ERROR The parameter is null: policy
2020-10-15 10:44:38,101 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid: field 'filePattern' has invalid value 'null', field 'policy' has invalid value 'null'
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.injectFields(PluginBuilder.java:208)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:121)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:579)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:651)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:668)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
        at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:581)
        at com.AJAx.first.server.FirstServer.<clinit>(FirstServer.java:10)

2020-10-15 10:44:38,111 main ERROR Null object returned for RollingFile in Appenders.
2020-10-15 10:44:38,111 main ERROR Null object returned for RollingFile in Appenders

我认为一定是属性文件有问题,但我真的不确定我是否在迁移过程中没有出错:

旧的log4j 1.x:

log4j.rootLogger=DEBUG, DefaultAppender, ErrorAppender, ConsoleAppender

log4j.appender.ConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.DefaultAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ErrorAppender=org.apache.log4j.DailyRollingFileAppender

log4j.appender.ConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsoleAppender.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n

# DefaultAppender uses PatternLayout.
log4j.appender.DefaultAppender.File=../var/first-server.log
log4j.appender.DefaultAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.DefaultAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DefaultAppender.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n

# ErrorAppender uses PatternLayout.
log4j.appender.ErrorAppender.File=../var/first-server_error.log
log4j.appender.ErrorAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.ErrorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ErrorAppender.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n
log4j.appender.ErrorAppender.threshold=ERROR

log4j.logger.com.ajax.db=DEBUG
log4j.logger.com.ajax.util=DEBUG
log4j.logger.com.first.ajax.server=DEBUG
log4j.logger.com.mchange=WARN
log4j.logger.org.springframework=INFO
log4j.logger.com.first.ajax.common.util=WARN
log4j.logger.org.apache.cxf=WARN
log4j.logger.org.mortbay=WARN

新的log4j2:

status=ERROR
rootLogger.level=DEBUG
appenders=default,error,console

appender.console.type=console
appender.console.name=STDOUT
appender.console.target=SYSTEM_OUT
appender.default.type=RollingFile
appender.default.name=RollingFile
appender.error.type=RollingFile
appender.error.name=RollingFile

appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n

# DefaultAppender uses PatternLayout.
appender.default.fileName=../var/first-server.log
appender.default.datePattern='.'yyyy-MM-dd
appender.default.layout.type=PatternLayout
appender.default.layout.pattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n

# ErrorAppender uses PatternLayout.
appender.error.fileName=../var/first-server_error.log
appender.error.datePattern='.'yyyy-MM-dd
appender.error.layout.type=PatternLayout
appender.error.layout.pattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n
appender.error.filter.threshold.type=ThresholdFilter
appender.error.filter.threshold.level=error

rootLogger.appenderRef.console.ref = STDOUT

logger.db.name=com.ajax.db
logger.db.level=DEBUG
logger.util.name=com.ajax.util
logger.util.level=DEBUG
logger.server.name=com.first.ajax.server
logger.server.level=DEBUG
logger.mchange.name=com.mchange
logger.mchange.level=WARN
logger.springframework.name=org.springframework
logger.springframework.level=INFO
logger.util.name=com.Ajax.first.common.util
logger.util.level=WARN
logger.cxf.name=org.apache.cxf
logger.cxf.level=WARN
logger.mortbay.name=org.mortbay
logger.mortbay.level=WARN

有人能帮忙吗?

-编辑-

status=ERROR
rootLogger.level=%%logging_level%%
appenders= default, error, console

appender.console.type=console
appender.console.name=STDOUT
appender.console.target=SYSTEM_OUT
appender.default.type=RollingFile
appender.default.name=RollingFile
appender.error.type=RollingFile
appender.error.name=RollingFile

appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n

# DefaultAppender uses PatternLayout.
appender.default.fileName=../var/first-server.log
appender.default.filePattern=../var/first-server-%d{yyyyMMdd}.log
appender.default.layout.type=PatternLayout
appender.default.layout.pattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n
appender.default.policies.type = Policies
appender.default.policies.time.type = TimeBasedTriggeringPolicy
appender.default.policies.time.interval = 1
appender.default.policies.time.modulate = true

# ErrorAppender uses PatternLayout.
appender.error.fileName=../var/first-server_error.log
appender.error.filePattern=../var/first-server_error-%d{yyyyMMdd}.log
appender.error.layout.type=PatternLayout
appender.error.layout.pattern=%d{yyyy.MM.dd HH:mm:ss,SSS} %-5p [%t] %c [%X{request} %X{command}] - %m%n
appender.error.filter.threshold.type=ThresholdFilter
appender.error.filter.threshold.level=ERROR
appender.error.policies.type = Policies
appender.error.policies.time.type = TimeBasedTriggeringPolicy
appender.error.policies.time.interval = 1
appender.error.policies.time.modulate = true

rootLogger.appenderRef.console.ref = STDOUT

logger.db.name=com.ajax.db
logger.db.level=WARN
logger.util.name=com.ajax.util
logger.util.level=WARN
logger.mchange.name=com.mchange
logger.mchange.level=WARN
logger.springframework.name=org.springframework
logger.springframework.level=WARN
logger.util.name=com.ajax.first.common.util
logger.util.level=WARN
logger.cxf.name=org.apache.cxf
logger.cxf.level=WARN
logger.mortbay.name=org.mortbay
logger.mortbay.level=WARN

推荐答案

您的log4j2属性中缺少某些配置。您创建了RollingFileAppder,但是您没有定义它们应该如何滚动。这就是错误告诉您filePatternpolicy为空的原因。请注意,DailyRollingFileAppender类不再存在于log4j2中,因此您基本上必须自己设置它。

filePattern属性告诉您在滚动文件时如何命名文件。例如,如果您希望滚动文件包含日期,则可以执行类似

的操作
appender.default.filePattern=../var/first-server-%d{yyyyMMdd}.log

这将为您提供类似first-server-20201017.log的名称。

您还需要设置描述何时滚动的策略。在您的情况下,您看起来需要每天滚动,因此应该类似于

appender.default.policies.type = Policies
appender.default.policies.time.type = TimeBasedTriggeringPolicy
appender.default.policies.time.interval = 1
appender.default.policies.time.modulate = true

This page提供了有关配置log4j2的更多详细信息。

这篇关于从log4j 1.x迁移到log4j 2.12.1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆