How do I not log a particular type of Exception in Logback?

You can do it with a simple EvaluatorFilter:

<filter class="ch.qos.logback.core.filter.EvaluatorFilter">

Please note that you need the following dependency in your pom.xml as well:


Another possible solution is a custom Filter implementation:

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.IThrowableProxy;
import ch.qos.logback.classic.spi.ThrowableProxy;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

public class SampleFilter extends Filter<ILoggingEvent> {

    private Class<?> exceptionClass;

    public SampleFilter() {

    public FilterReply decide(final ILoggingEvent event) {
        final IThrowableProxy throwableProxy = event.getThrowableProxy();
        if (throwableProxy == null) {
            return FilterReply.NEUTRAL;

        if (!(throwableProxy instanceof ThrowableProxy)) {
            return FilterReply.NEUTRAL;

        final ThrowableProxy throwableProxyImpl = 
            (ThrowableProxy) throwableProxy;
        final Throwable throwable = throwableProxyImpl.getThrowable();
        if (exceptionClass.isInstance(throwable)) {
            return FilterReply.DENY;

        return FilterReply.NEUTRAL;

    public void setExceptionClassName(final String exceptionClassName) {
        try {
            exceptionClass = Class.forName(exceptionClassName);
        } catch (final ClassNotFoundException e) {
            throw new IllegalArgumentException("Class is unavailable: "
                    + exceptionClassName, e);

With a proper config:

<filter class="hu.palacsint.logbacktest.SampleFilter">

In a TurboFilter you get the thrown Throwable instance directly, so you can call the isInstance method without manually casting the IThrowableProxy to ThrowableProxy.

Further documentation

Leave a Comment