---
name: "Log::Log4perl::Filter::Boolean"
section: "3pm"
platform: "linux"
package: "perl-log-log4perl"
version: "1.58-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Log::Log4perl::Filter::Boolean"
---

# Log::Log4perl::Filter::Boolean(3pm)

Special filter to combine the results of others

## NAME

Log::Log4perl::Filter::Boolean - Special filter to combine the results of others

## SYNOPSIS

```
    log4perl.logger = WARN, AppWarn, AppError
    log4perl.filter.Match1       = sub { /let this through/ }
    log4perl.filter.Match2       = sub { /and that, too/ }
    log4perl.filter.MyBoolean       = Log::Log4perl::Filter::Boolean
    log4perl.filter.MyBoolean.logic = Match1 || Match2
    log4perl.appender.Screen        = Log::Dispatch::Screen
    log4perl.appender.Screen.Filter = MyBoolean
    log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout
```

## DESCRIPTION

Sometimes, it's useful to combine the output of various filters to arrive at a log/no log decision. While Log4j, Log4perl's mother ship, chose to implement this feature as a filter chain, similar to Linux' IP chains, Log4perl tries a different approach.

Typically, filter results will not need to be passed along in chains but  combined in a programmatic manner using boolean logic. "Log if this filter says 'yes' and that filter says 'no'"  is a fairly common requirement but hard to implement as a chain.

`"Log::Log4perl::Filter::Boolean"` is a special predefined custom filter for Log4perl which combines the results of other custom filters  in arbitrary ways, using boolean expressions:

```
    log4perl.logger = WARN, AppWarn, AppError
    log4perl.filter.Match1       = sub { /let this through/ }
    log4perl.filter.Match2       = sub { /and that, too/ }
    log4perl.filter.MyBoolean       = Log::Log4perl::Filter::Boolean
    log4perl.filter.MyBoolean.logic = Match1 || Match2
    log4perl.appender.Screen        = Log::Dispatch::Screen
    log4perl.appender.Screen.Filter = MyBoolean
    log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout
```

`"Log::Log4perl::Filter::Boolean"`'s boolean expressions allow for combining different appenders by name using AND (&& or &), OR (\|\| or \|) and NOT (!) as logical expressions. Parentheses are used for grouping. Precedence follows standard Perl. Here's a bunch of examples:

```
    Match1 && !Match2            # Match1 and not Match2
    !(Match1 || Match2)          # Neither Match1 nor Match2
    (Match1 && Match2) || Match3 # Both Match1 and Match2 or Match3
```

## SEE ALSO

Log::Log4perl::Filter, Log::Log4perl::Filter::LevelMatch, Log::Log4perl::Filter::LevelRange, Log::Log4perl::Filter::MDC, Log::Log4perl::Filter::StringRange

## LICENSE

Copyright 2002-2026 by Mike Schilli \<m@perlmeister.com\> and Kevin Goess \<cpan@goess.org\>.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
