【问题标题】:Disable logging for one exception为一个异常禁用日志记录
【发布时间】:2015-11-20 05:27:46
【问题描述】:

我有一个“重复条目”异常,它记录了SqlExceptionHelper。我只需要禁用记录此异常。我该怎么做?

【问题讨论】:

    标签: java exception logging exception-logging


    【解决方案1】:

    我假设您正在使用 Log4j 进行日志记录。您可能想探索ExpressionFilter

    我正在附加一个示例配置,希望您可以从那里获取它。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
        <appender name="CONSOLE">
            <param name="Target" value="System.out"/>
            <layout>
                <param name="ConversionPattern" value="%d %p [%c] - %m%n"/>
            </layout>
            <filter class="org.apache.log4j.filter.ExpressionFilter">
                <param name="expression" value="EXCEPTION ~= SqlExceptionHelper" />
                <param name="acceptOnMatch" value="false"/>
            </filter>
        </appender>
        <root>
            <priority value ="INFO" />
            <appender-ref ref="CONSOLE"/>
        </root>
    </log4j:configuration>
    

    【讨论】:

    【解决方案2】:

    你可以捕获异常而不做任何事情

    try {                                              
          method();      
    
        } catch(ConstraintViolationException  e){}    
    

    【讨论】:

    • 这个异常在hibernate的saveOrUpdate方法中抛出。我稍后再接。
    • 抑制异常是个很不好的习惯
    【解决方案3】:

    如果你使用的是 log4j2

    <Logger name="org.hibernate.engine.jdbc.spi.SqlExceptionHelper" level="OFF" additivity="false">
         <AppenderRef ref="Console" />
    </Logger>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-23
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多