I want to configure log4j2.properties file in a that way where my swapi.log entries delete all previous logs written, for example if we want to delete log entry for upto 30 entries, once it reaches to 30, it automatically gets deleted. Because we don't to occupy server memory.
So, far I tried this as given below and its working fine in console and appending in log file. But I badly stuck to figure out that how to delete all previous log entries. Any help would be highly appreciated.
name=PropertiesConfig
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=C:\\SWAPILogs\\swapi.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
loggers=file
logger.file.name=com.gds.service
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
rootLogger.level = debug
rootLogger.appenderRefs = STDOUT
rootLogger.appenderRef.stdout.ref = STDOUT
As remarked by Nitesh in the comments to rotate your log files you need to use a RollingFileAppender
. You'll also need:
max="30"
on the DefaultRolloverStrategy
,filePattern
containing an integer %i
,TriggeringPolicy
, which will tell the appender when it has to roll.You XML configuration will look like:
<RollingFile
name="LOGFILE"
fileName="C:\SWAPILogs\swapi.log"
filePattern="C:\SWAPILogs\swapi-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
<SizeBasedTriggeringPolicy size="10 MB" />
<DefaultRolloverStrategy
fileIndex="min"
max="30" />
</RollingFile>
The properties configuration format you are using is much more verbose, but can be easily derived from the XML format: all properties of a certain component share the same prefix and are specified using <component prefix>.<property name>
. All subcomponents use the prefix <parent component's prefix>.<component id>
, where <component id>
is an arbitrarily chosen identifier. Each component must have a property <component prefix>.type
that reflects the tag name in the XML configuration.
The configuration above can be translated into:
appender.file.type = RollingFile
appender.file.name = LOGFILE
appender.file.fileName=C:\\SWAPILogs\\swapi.log
appender.file.filePattern=C:\\SWAPILogs\\swapi-%i.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.policy.type=SizeBasedTriggeringPolicy
appender.file.policy.size=10 MB
appender.file.strategy.type=DefaultRolloverStrategy
appender.file.strategy.fileIndex=min
appender.file.strategy.max=30