Search code examples
log4jsap-commerce-cloud

Hybris: How to create separate log4j log files in the same extension


I need to log some audit logs to a separate file than standard console logs. I tried to create custom logger with the properties added to custom extension

log4j.appender.auditLog=org.apache.log4j.FileAppender
log4j.appender.auditLog.File=/somelogsfile.log
log4j.appender.auditLog.layout=org.apache.log4j.PatternLayout
log4j.appender.auditLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.category.auditLogger=INFO, auditLog
log4j.additivity.auditLogger=false

Then i have initialised logger as:

Logger LOG2= Logger.getLogger("auditLogger");
LOG2.info("Test");

The logs are output to standard console logs but not to the specified File. What am I missing?


Solution

  • Based on the updated question, I did some extra investigation and tested it out on my own system.

    Most likely, your hybris version is making use of log4j2 this means that the config should be like this:

    log4j2.appender.auditLog.type=File
    log4j2.appender.auditLog.name=auditLog
    log4j2.appender.auditLog.fileName=${HYBRIS_LOG_DIR}/audit.log
    log4j2.appender.auditLog.layout.type=PatternLayout
    log4j2.appender.auditLog.layout.pattern=%d [%24F:%t:%L] - %m%n
    
    log4j2.logger.auditLogger.name=auditLogger
    log4j2.logger.auditLogger.level=info
    log4j2.logger.auditLogger.appenderRefs=auditLogger
    log4j2.logger.auditLogger.appenderRef.auditLogger.ref=auditLog
    log4j2.logger.auditLogger.additivity=false
    

    I've tested this out on my local system, and using Logger LOG= Logger.getLogger("auditLogger") prints the log statements to the new file