1
votes

I am trying to configure log4j2 with properties file. I need to have multiple rolling file appenders to log in multiple files. But I can't seem to get multiple rolling file appenders to work. When i use only one rolling file appender, it seems to be working fine and the corresponding log file is generated. In case of multiple appenders only the root logger is generating the log file.

My current configuration is:-

name = PropertiesConfig
status = warn
property.log-path = E:/logs

appenders =  rolling

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender1
appender.rolling.fileName = ${log-path}/log1.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log1.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender2
appender.rolling.fileName = ${log-path}/log2.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender3
appender.rolling.fileName = ${log-path}/log3.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log3.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender4
appender.rolling.fileName = ${log-path}/log4.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log4.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender5
appender.rolling.fileName = ${log-path}/log5.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log5.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender6
appender.rolling.fileName = ${log-path}/log6.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log6.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender7
appender.rolling.fileName = ${log-path}/log7.log
appender.rolling.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log7.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type=Policies
appender.rolling.policies.time.type=TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

appender.rolling.type = RollingFile
appender.rolling.name = rolAppender8
appender.rolling.fileName = ${log-path}/log8.log
appender.rolling.filePattern = {log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log8.log
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MMM-dd - HH:mm} [%-p] %C{1}.%M(%F:%L)-:%m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 1
appender.rolling.policies.time.modulate = false

loggers = rolling 

logger.rolling.name = org.springframework
logger.rolling.level = fatal


logger.rolling.name = logger1
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender1

logger.rolling.name = logger2
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender2

logger.rolling.name = logger3
logger.rolling.level = info
logger.rlolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender3

logger.rolling.name = logger4
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender4

logger.rolling.name = logger5
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender5

logger.rolling.name = logger6
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender6

logger.rolling.name = logger7
logger.rolling.level = info
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = rolAppender7


rootLogger.level = info
rootLogger.appenderRefs = f
rootLogger.appenderRef.f.ref = rolAppender8

I am a new to log4j2 and don't know much about it. Any help would be appreciated.

2

2 Answers

1
votes

You need to use different names for all yours appenders. For now it is just rolling. It should be ..

appenders = rolling, rolling1, rolling2, .. so on

appender.rolling.type = RollingFile
appender.rolling1.type = RollingFile
appender.rolling2.type = RollingFile

Here rolling, rolling1, rolling2 are different rolling appenders for different logs.

and so on for all the rolling appenders and their corresponding other attributes. I have just picked a attribute 'type' as an example.

Same goes for the loggers. as well..

1
votes

I guess you have copied one online tutorials' snippet code, which probably was about teaching how to roll a single file not multiple files. If that is true, please keep in mind to be more careful while using tutorials' codes in your own code.

Take a look at rolling in appender.rolling.name = rolAppender2 for instance. rolling term specifies this configuration belongs to which appender and each Appender must have a unique term instead of term rolling for all the appenders.

In other words, although you have differentiated each appender by using a unique name for each one them, you are still using appender.rolling.... for each appender.

As a result, your code should look like something like below:

appender.rollAppender1.type = RollingFile
appender.rollAppender1.name = rollAppender1
appender.rollAppender1.fileName = ${log-path}/log1.log
appender.rollAppender1.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log1.log
appender.rollAppender1.layout.type = PatternLayout
.
.
.

appender.rollAppender2.type = RollingFile
appender.rollAppender2.name = rollAppender2
appender.rollAppender2.fileName = ${log-path}/log2.log
appender.rollAppender2.filePattern = ${log-path}/$${date:yyyy-MM}/Log-%d{dd-MMM-yyyy}-log2.log
appender.rollAppender2.layout.type = PatternLayout
.
.
.

loggers=RollLogger1,RollLogger2

logger.rolling1Logger.name = RollLogger1
logger.rolling1Logger.level = info
logger.rolling1Logger.additivity = false
logger.rolling1Logger.appenderRef.rolling.ref = rollAppender1

logger.rolling2Logger.name = RollLogger2
logger.rolling2Logger.level = info
logger.rolling2Logger.additivity = false
logger.rolling2Logger.appenderRef.rolling.ref = rollAppender2
.
.
.

you can also remove `