Reputation: 13
i currently upgraded log4j 1.x to log4j 2.12.1 and when i wanted to start the program i get the following error message:
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
i think it has to be something with the properties File, but i am really not sure if i didnt made some mistakes with the migration:
old 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
the new 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
Can someone help there?
----EDIT---------
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
Upvotes: 1
Views: 4853
Reputation: 437
You're missing some configurations in your log4j2 properties. You created RollingFile appenders, however you didn't define how they should roll. That's why the errors are telling you that filePattern
and policy
are null. Note that the DailyRollingFileAppender
class no longer exists in log4j2, so you have to basically set it up yourself.
The filePattern
property tells you how to name the file when you roll it. For example, if you wanted the rolled files to contain the date, you could do something like
appender.default.filePattern=../var/first-server-%d{yyyyMMdd}.log
which would give you a name like first-server-20201017.log
.
You also need to set up the policies to describe when to roll. In your case it looks like you want daily rolling, so it would be something like
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 gives a lot more details about configuring log4j2.
Upvotes: 2