【问题标题】:RegexFilter log4j2正则表达式过滤器 log4j2
【发布时间】:2014-11-18 17:35:09
【问题描述】:

我正在使用 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 行它会完美记录。我正在使用最后一个休眠版本。 提前致谢! 尼古拉斯。

【问题讨论】:

    标签: xml hibernate log4j2


    【解决方案1】:

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

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

    <RegexFilter regex=".*\b(insert|update|delete)\b.*" 
                 onMatch="ACCEPT" 
                 onMismatch="DENY"/>
    

    注意事项

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

      为了允许属性值同时包含单引号和双引号,撇号或单引号字符 (') 可以表示为“&amp;apos;”,而双引号字符 (") 可以表示为“&amp;quot;” .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2017-06-19
      • 2012-12-10
      • 2018-01-11
      相关资源
      最近更新 更多