# Activate the External folder appender.
# Be sure to configure/change the MY_EXTERNAL_FOLDER to have logs at the place you want.
log4j2.rootLogger.appenderRef.ExternalFolder.ref = ExternalFolder
# External folder appender
log4j2.appender.external.type = Routing
log4j2.appender.external.name = ExternalFolder
log4j2.appender.external.rewritePolicy.type = TalendKarafRewritePolicy
log4j2.appender.external.routes.type = Routes
log4j2.appender.external.routes.pattern = $\\{ctx:flowExecutionId\\}
log4j2.appender.external.routes.route1.type = Route
log4j2.appender.external.routes.route1.rolling.type = RollingFile
log4j2.appender.external.routes.route1.rolling.name = flowexecution-$\\{ctx:flowExecutionId\\}
log4j2.appender.external.routes.route1.rolling.fileName = MY_EXTERNAL_FOLDER/$\\{ctx:flowID\\}/$\\{ctx:flowExecutionId\\}.log
log4j2.appender.external.routes.route1.rolling.filePattern = MY_EXTERNAL_FOLDER/$\\{ctx:flowID\\}/$\\{ctx:flowExecutionId\\}.log.%i
# Use the 3 lines below for json pattern
log4j2.appender.external.routes.route1.rolling.layout.type = JsonTemplateLayout
log4j2.appender.external.routes.route1.rolling.layout.eventTemplateUri=${karaf.base.uri}/etc/jsonLogMinTemplate.json
log4j2.appender.external.routes.route1.rolling.layout.stackTraceElementTemplateUri=${karaf.base.uri}/etc/StackTraceElementLayout.json
# Uncomment two lines below for text pattern
#log4j2.appender.external.routes.route1.rolling.layout.type = PatternLayout
#log4j2.appender.external.routes.route1.rolling.layout.pattern = ${log4j2.pattern}
log4j2.appender.external.routes.route1.rolling.policy.type = SizeBasedTriggeringPolicy
log4j2.appender.external.routes.route1.rolling.policy.size = 100MB
log4j2.appender.external.routes.route1.rolling.strategy.type = DefaultRolloverStrategy
log4j2.appender.external.routes.route1.rolling.strategy.max = 1
# By having this set to ${ctx:flowExecutionId} it will match when flowExecutionId is not set in the context
log4j2.appender.external.routes.route2.type = Route
log4j2.appender.external.routes.route2.key = $\\{ctx:flowExecutionId\\}
log4j2.appender.external.routes.route2.null.type = CountingNoOp
log4j2.appender.external.routes.route2.null.name = CountingNoOp
Ce code est un exemple. Lorsque vous le copiez pour l'utiliser dans votre système, n'oubliez pas de modifier
MY_EXTERNAL_FOLDER pour utiliser le répertoire réel dans lequel stocker les logs, par exemple
/home/usr/my-re-log sous Linux ou
D:/remote-engine/my-log-folder sous Windows.
La partie $\\{ctx:flowID\\}/$\\{ctx:flowExecutionId\\} représente les variables à utiliser pour nommer les fichiers de log. Si vous n'avez pas besoin d'un nom de fichier généré dynamiquement, remplacez-le par du plein texte.
Après toutes ces modifications, les lignes
log4j2.appender.external.routes.route1.rolling.fileName et
log4j2.appender.external.routes.route1.rolling.filePattern ressemblent à ceci :
- sous Windows :
log4j2.appender.external.routes.route1.rolling.fileName = C:/my-personal-folder/my-log-foler/my-log.log
log4j2.appender.external.routes.route1.rolling.filePattern = C:/my-personal-folder/my-log-foler/my-log.log.%i
- sous Linux :
log4j2.appender.external.routes.route1.rolling.fileName = /home/usr/my-re-log/my-log.log
log4j2.appender.external.routes.route1.rolling.filePattern = /home/usr/my-re-log/my-log.log.%i