steller
steller

Reputation: 255

log4j 1 to log4j 2 properties file

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

Answers (1)

Piotr P. Karwasz
Piotr P. Karwasz

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

Related Questions