Search code examples
logginglog4j2properties-file

How to log custom level with Log4J2 to file?


I have the following properties config file:

name=ACME_CRM
property.filename=log
appenders=console,file

appender.console.type=Console
appender.console.name=STDOUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

appender.file.type=File
appender.file.name=LOGFILE
appender.file.fileName=target/${filename}.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

loggers=file
logger.file.name=LOGIN
logger.file.level=401
logger.file.appenderRefs=file
logger.file.appenderRef.file.ref=LOGFILE

rootLogger.level=debug
rootLogger.appenderRefs=stdout
rootLogger.appenderRef.stdout.ref=STDOUT

In my code I do:

logger.log(Level.forName("LOGIN", 401), userName);

However when I go to tail my log file nothing shows up. What am I doing wrong? I have tried replacing the level with LOGIN and nothing happens. What can I change?


Solution

  • First, define custom level before logger

    static Level level = Level.forName("LOGIN", 401);
    static Logger logger = LogManager.getLogger();
    

    Second, change the corresponding lines as below:

    logger.file.name=YOUR_PACKAGE_NAME
    logger.file.level=LOGIN