How to write different logs in different files with log4j2 (MDC in xml)?

Now I use the structure as follows: Appender:

<RollingFile name="user.log" append="true" fileName="users/%MDC{USERNAME}.txt" filePattern="users/archive/%MDC{USERNAME}-%d{MM-dd-yyyy}-%i.txt.gz"> <PatternLayout pattern="%-5p %d{MMMM-dd HH:mm:ss} %X: %c - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> </RollingFile> 

Logger:

  <appender-ref ref="user.log"> <ThreadContextMapFilter onMatch="ACCEPT" onMismatch="DENY" operator="or"> <KeyValuePair key="USERNAME" value="%X{USERNAME}"/> <KeyValuePair key="IP" value="%X{IP}"/> </ThreadContextMapFilter> </appender-ref> 

But it does not work with MDC keys. How can I use MDC keys in xml to configure RollingFileAppender?

+1
source share
1 answer

Take a look at RoutingAppender. Perhaps this will help you:

 <?xml version="1.0" encoding="UTF-8"?> <configuration status="DEBUG" name="MyApp" packages=""> <appenders> <Routing name="Routing"> <Routes pattern="$${ctx:USERNAME}"> <Route> <RollingFile name="user.log" append="true" fileName="users/${ctx:USERNAME}.txt" filePattern="users/archive/${ctx:USERNAME}-%d{MM-dd-yyyy}-%i.txt.gz"> <PatternLayout> <pattern>%d{ISO8601} [%t] %p %c %L - %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> </RollingFile> </Route> </Routes> </Routing> </appenders> <loggers> <root level="TRACE"> <appender-ref ref="Routing" level="DEBUG" /> </root> </loggers> </configuration> 
+7
source

Source: https://habr.com/ru/post/1444116/


All Articles