2013-07-24 23 views
1

現在我使用的結構是這樣的: 追加程序:如何使用log4j2(xml中的MDC)在不同的文件中寫入不同的日誌?

<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> 

記錄儀:

<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> 

不過,這並不與MDC鍵的工作。我如何使用xml中的MDC鍵來配置RollingFileAppender?

回答

5

看看RoutingAppender。也許這可以讓你開始:

<?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> 
+0

非常感謝。但是已經太晚了xD我已經自己找到了這個解決方案。無論如何謝謝你!) – ruslanys

相關問題