2014-09-22 531 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>