Reputation: 255
Can someone help me out?
I am going from log4j 1 to 2 and i am unable to get a working properties file. The rolling file vds.log does not appear
Here is my old working props
# default properties to initialise log4j
log4j.rootLogger=INFO, rollingFile
# settings for specific packages
log4j.logger.com.wordnik.swagger=INFO
log4j.logger.org.apache.camel.component.servlet=INFO
log4j.logger.org.apache.camel.component.swagger=INFO
log4j.logger.org.apache.camel=INFO
# Console appender
# Uncomment when running locally
#log4j.appender.console=org.apache.log4j.ConsoleAppender
#log4j.appender.console.layout=org.apache.log4j.PatternLayout
#log4j.appender.console.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.maxFileSize=10MB
log4j.appender.rollingFile.maxBackupIndex=10
log4j.appender.rollingFile.File=C:/logs/vds.log
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.rollingFile.append=true
This is what i tried but doesnt work
status = debug
name= vds
# Log files location
property.basePath = c:/logs
appender.logger.com.wordnik.swagger=INFO
appender.logger.org.apache.camel.component.servlet=INFO
appender.logger.org.apache.camel.component.swagger=INFO
appender.logger.org.apache.camel=INFO
# RollingFileAppender name, pattern, path and rollover policy
appender.rolling.type = RollingFile
appender.rolling.name = fileLogger
appender.rolling.fileName= ${basePath}/app.log
appender.rolling.filePattern= ${basePath}/app_%d{yyyyMMdd}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %level [%t] [%l] - %msg%n
appender.rolling.policies.type = Policies
# RollingFileAppender rotation policy
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.delete.type = Delete
appender.rolling.strategy.delete.basePath = ${basePath}
appender.rolling.strategy.delete.maxDepth = 10
appender.rolling.strategy.delete.ifLastModified.type = IfLastModified
# Delete all files older than 30 days
appender.rolling.strategy.delete.ifLastModified.age = 30d
# Configure root logger
rootLogger.level = debug
rootLogger.appenderRef.rolling.ref = fileLogger
POM
<!-- logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.16.0</version>
</dependency>
I looked over other answers but none helped me. Thats why i resorted in asking for help. Can someone please help me? Thanks in advance.
Upvotes: 2
Views: 3130
Reputation: 16045
The properties file format is not the default configuration format in Log4j 2.x (it was only introduced in 2.4). If you were to use XML, there is an automatic configuration converter in log4j-1.2-api
, which can convert your properties file to XML using:
java -cp log4j-1.2-api-2.16.0.jar:log4j-api-2.16.0.jar:log4j-core-2.16.0.jar org.apache.log4j.config.Log4j1ConfigurationConverter -i log4j.properties -o log4j2.xml
(I assume all three jars, log4j-1.2-api
, log4j-api
and log4j-core
are in the current directory). In your case this gives you:
<?xml version="1.0" ?>
<Configuration name="Log4j1">
<Appenders>
<RollingFile
name="rollingFile"
fileName="C:/logs/vds.log"
filePattern="C:/logs/vds.log.%i">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n" />
<Policies>
<SizeBasedTriggeringPolicy size="10485760" />
</Policies>
<DefaultRolloverStrategy max="1" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="rollingFile" />
</Root>
<Logger
name="org.apache.camel.component.swagger"
level="INFO" />
<Logger
name="org.apache.camel.component.servlet"
level="INFO" />
<Logger
name="org.apache.camel"
level="INFO" />
<Logger
name="com.wordnik.swagger"
level="INFO" />
</Loggers>
</Configuration>
(the indentation is mine). Remark: the max="1"
is probably a bug in the converter.
If you insist on using the properties format, your logger configuration should look like:
logger.1.name=com.wordnik.swagger
logger.1.level=INFO
logger.2.name=org.apache.camel.component.servlet
logger.2.level=INFO
logger.3.name=org.apache.camel.component.swagger
logger.3.level=INFO
logger.4.name=org.apache.camel
logger.4.level=INFO
Upvotes: 2