2014-09-22 46 views
0

我正在使用log4j2配置文件設置來嘗試使配置文件使用正則表達式,以便它可以在記錄器屬性和名稱屬性中使用多個類。這是我迄今爲止所嘗試的,看起來不起作用。Log4j2正則表達式

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN" monitorInterval="30"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </Console> 
     <File name="ERROR_FILE" fileName="../log/error.log"> 
      <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </File> 
     <File name="EVENT_FILE" fileName="../log/event.log"> 
      <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Logger name="foo.test" level="trace" 
      additivity="false"> 
      <AppenderRef ref="Console" /> 
     </Logger>  
     <Logger name="foo.*" level="debug" 
      additivity="false"> 
      <AppenderRef ref="ERROR_FILE" level="ERROR"/> 
      <AppenderRef ref="EVENT_FILE" level="INFO"/> 
     </Logger>  
     <Root level="trace"> 
      <AppenderRef ref="Console" /> 
     </Root> 
    </Loggers> 
</Configuration> 

有沒有人能夠在log4j2配置文件中成功使用正則表達式或甚至globs?

回答

2

我想通了,我不需要在包名中放置正則表達式。例如,如果在我的foo包中,我有foo.bar,foo.foo和foo.test。我會將foo放入Logger屬性名稱屬性中,以記錄以foo開頭的任何3個包中的ERROR和INFO級別日誌。

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN" monitorInterval="30"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </Console> 
     <File name="ERROR_FILE" fileName="../log/error.log"> 
      <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </File> 
     <File name="EVENT_FILE" fileName="../log/event.log"> 
      <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Logger name="foo.test" level="trace" 
      additivity="false"> 
      <AppenderRef ref="Console" /> 
     </Logger>  
     <Logger name="foo" level="debug" 
      additivity="false"> 
      <AppenderRef ref="ERROR_FILE" level="ERROR"/> 
      <AppenderRef ref="EVENT_FILE" level="INFO"/> 
     </Logger>  
     <Root level="trace"> 
      <AppenderRef ref="Console" /> 
     </Root> 
    </Loggers> 
</Configuration>