Hi Gary, On Wed, 9 Oct 2024 at 16:34, Gary D. Gregory <ggreg...@apache.org> wrote: > My proposal is to allow a user to _not_ define any custom filters by reusing > a new Result enum value called “Throw”. When a filter returns “Throw”, then > Log4j throws a new LoggingException subclass called FilterLoggingException.
I find Log4j's 3-valued filtering system already very complex: - it is difficult or impossible to make a composite filter for a moderately complex boolean expression. If you have 3 filters that check A, B and C, how do you make a filter for `(A OR B) AND C ? ACCEPT : NEUTRAL`? - the difference between `ACCEPT` and `NEUTRAL` is never used, except for global filters[1]. - writing global filters requires a lot of knowledge about Log4j. For example the `Throwable` associated with a log event, can be hidden in one of 3 parameters (see the second `local/script.groovy` example in the documentation[2]. Given that I am not eager to complexify filters with yet another possible result Piotr PS: Note, Logback solves the boolean expression in a simple way: it has an `EvaluatorFilter` that uses a tree of `Predicate<LogEvent>` components to decide, which result to output. [1] https://logging.apache.org/log4j/2.x/manual/filters.html#logger-stage [2] https://logging.apache.org/log4j/2.x/manual/filters.html#Script