Java >> Java tutorial >  >> Tag >> Log4j

Log4j2 tilpasse filstien med rollingFileAppender (Java)

Jeg migrerer fra log4j 1.x til log4j2 i mit spring boot-program. At være på log4j 1.x plejede jeg at definere egenskaberne som følger:

log4j.appender.A1=package.CustomRollingFileAppender
log4j.appender.A1.File=<base.path>/company/logs/main.log

i min CustomRollingFileAppender ville jeg udvide denne klasse med DailyRollingFileAppender og ville tilsidesætte setName()-metoden for at ændre min '' til det relevante mappenavn.

Migrerer til log4j 2.x Jeg har ikke længere klassen DailyRollingFileAppender og kan ikke forlænge RollingFileAppender, fordi den er erklæret som en endelig. Jeg kan heller ikke tilsidesætte funktionen writeToName.

Så hvordan ændrer jeg i min egenskabsfil til det relevante mappenavn baseret på mine miljøs statiske egenskaber?

Svar

Du rører typisk ikke implementeringskoden for log4j2 klasser. Det, du forsøger at gøre, kan gøres gennem konfiguration.

https://logging.apache.org/log4j/2.x/manual/migration.htmlhttps://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender

Du kan gøre det, du beder om, sådan her

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${BASE_DIR}/application.log
appender.rolling.filePattern = ${BASE_DIR}/application.%d{dd-MMM}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5
logger.rolling.name = rollingFile
logger.rolling.level = debug
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = RollingFile

hvor BASE_DIR er en miljøvariabel


Java tag