Search code examples
logginglog4jlog4j2porting

Converting log4j.properties into log4j2.xml


I never worked with this type of issue and now I'm supposed to port log4j.properties file into log4j2.xml and I'm having bunch of problems.

Is there any tool that I could use for this? Or any guide because I'm really stuck here.

List of some Log4j.properties that I have to transfer:

log4j.additivity.com.company.areas.audit.config.auditors.TransactionAuditor=false;
(Bunch of lines like these below, with different paths)
log4j.logger.net.sf=WARN, FILE,FILE_ERROR,CONSOLE
log4j.logger.xxxx.yyyy.zzzz = ERROR,FILE,FILE_ERROR,CONSOLE
log4j.logger.aaaa.bbbb.cccc = INFO, FILE,FILE_ERROR,CONSOLE
log4j.appender.CONSOLE.Threshold=OFF
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=${base.path}/logs/application.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n
log4j.appender.FILE.MaxFileSize=100000KB
log4j.appender.FILE.MaxBackupIndex=5
log4j.appender.FILE_PERFORMANCE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE_PERFORMANCE.File=${base.path}/logs/application_performance.log
log4j.appender.FILE_PERFORMANCE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE_PERFORMANCE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n
log4j.appender.FILE_PERFORMANCE.MaxFileSize=10000KB
log4j.appender.FILE_PERFORMANCE.MaxBackupIndex=2
(and bunch of similar stuff but for example instead of FILE_PERFORMACE I have things like: "FILE_ERROR" -> log4j.appender.FILE_ERROR = org.apache.log4j.RollingFileAppender", "FILE_INTEGRATION" etc"

If someone could help me translate these properties from above, I believe I would be able to translate others by myself because they're similar to these.

Thanks in advance!


Solution

  • I didn't find tool that would translate log4j.properties file into log4j2.xml but manual translation ended up being quite simple.

    Example for loggers:

    log4j.additivity.com.exm.tst.audit.config.auditors.TransactionAuditor=false
    log4j.logger.com.exm.tst.audit.config.auditors.TransactionAuditor=ERROR, FILE
    

    Will become:

    <Logger name="com.exm.tst.audit.config.auditors.TransactionAuditor" 
       additivity="false" level="ERROR">
       <appender-ref ref="FILE"/>
    </Logger>
    

    Example for appenders:

    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=${catalina.base}/logs/application.log
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n
    log4j.appender.FILE.MaxFileSize=100000KB
    log4j.appender.FILE.MaxBackupIndex=5
    

    Will become:

    <RollingFile name="FILE" fileName="${sys:catalina.home}/logs/application.log"
        filePattern="${sys:catalina.home}/logs/application.%i.log.gz" >
        <PatternLayout pattern="${LOG_PATTERN}"/>
        <Policies>
            <SizeBasedTriggeringPolicy size="10000KB" />
        </Policies>
        <DefaultRolloverStrategy max="5"/>
    </RollingFile>
    

    So entire log4j2.xml file based on this example should look like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN" monitorInterval="30">
     
        <!-- Logging Properties -->
        <Properties>
            <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n</Property>
        </Properties>
         
        <Appenders>
             
            <RollingFile name="FILE" fileName="${sys:catalina.home}/logs/application.log"
                filePattern="${sys:catalina.home}/logs/application.%i.log.gz" >
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <SizeBasedTriggeringPolicy size="10000KB" />
                </Policies>
                <DefaultRolloverStrategy max="5"/>
            </RollingFile>
             
        </Appenders>
     
        <Loggers>
         
            <Logger name="com.exm.tst.audit.config.auditors.TransactionAuditor" 
               additivity="false" level="ERROR">
               <appender-ref ref="FILE"/>
            </Logger>
     
        </Loggers>
     
    </Configuration>