RegexFilter log4j2

时间:2014-11-18 17:35:09

标签: xml hibernate log4j2

我正在使用log4j2。这是我的xml:

    

 <Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT"> 
        <RegexFilter regex=".*\\binsert\\b.*|.*\\bupdate\\b.*|.*\\bdelete\\b.*" onMatch="ACCEPT" onMismatch="DENY" />  
        <PatternLayout pattern="%mdc{usuario} - %m%n" />
    </Console>

   <RollingFile name="file-log" fileName="c:/logs/SIGE.log"
        filePattern="c:/logs/SIGE-%d{yyyy-MM-dd}.log">
        <PatternLayout>
            <pattern>[%-5level] [%mdc{usuario}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t]  %c{1} - %m%n</pattern>
        </PatternLayout>
        <RegexFilter regex=".*\\binsert\\b.*|.*\\bupdate\\b.*|.*\\bdelete\\b.*" onMatch="ACCEPT" onMismatch="DENY" />  
        <Policies>
            <SizeBasedTriggeringPolicy />
        </Policies>
    </RollingFile>

</Appenders>
<Loggers>
    <logger name="org.hibernate.SQL" level="DEBUG" additivity="false">
        <AppenderRef ref="STDOUT" />
        <AppenderRef ref="file-log" />
    </logger>
    <logger name="org.hibernate.type" level="TRACE" additivity="false">
        <AppenderRef ref="STDOUT" />
        <AppenderRef ref="file-log" />
    </logger>       
</Loggers>

我的想法是过滤只记录hibernate的更新,插入和删除语句。但有了这个,它没有记录任何东西,如果我评论它完整记录的regexfilter线。我正在使用最后一个hibernate版本。 提前致谢! 尼古拉斯。

1 个答案:

答案 0 :(得分:2)

由于正则表达式是XML元素的属性值,因此您不需要像Java语言中的字符串文字那样转义\字符,但前提是字符是单引号({ {1}})或双引号(')。在这种情况下,您应分别使用"&apos; 1

因此,您的正则表达式可以是:

&quot;

备注

  1. http://www.w3.org/TR/2008/REC-xml-20081126/#syntax

      

    要允许属性值包含单引号和双引号,撇号或单引号字符(')可以表示为“<RegexFilter regex=".*\b(insert|update|delete)\b.*" onMatch="ACCEPT" onMismatch="DENY"/> ”,双引号字符(“)表示为”{{ 1}}“。