# Filters

A Filter object blocks a message from being written to the log.

## Filtering for All Writers

To filter before all writers, you can add any number of Filters to a Log object using the `addFilter()` method:

    $logger = new Zend_Log();

    $writer = new Zend_Log_Writer_Stream('php://output');
    $logger->addWriter($writer);

    $filter = new Zend_Log_Filter_Priority(Zend_Log::CRIT);
    $logger->addFilter($filter);

    // blocked
    $logger->info('Informational message');

    // logged
    $logger->emerg('Emergency message');

When you add one or more Filters to the Log object, the message must pass through all of the Filters before any Writers receives it.

## Filtering for a Writer Instance

To filter only on a specific Writer instance, use the `addFilter` method of that Writer:

    $logger = new Zend_Log();

    $writer1 = new Zend_Log_Writer_Stream('/path/to/first/logfile');
    $logger->addWriter($writer1);

    $writer2 = new Zend_Log_Writer_Stream('/path/to/second/logfile');
    $logger->addWriter($writer2);

    // add a filter only to writer2
    $filter = new Zend_Log_Filter_Priority(Zend_Log::CRIT);
    $writer2->addFilter($filter);

    // logged to writer1, blocked from writer2
    $logger->info('Informational message');

    // logged by both writers
    $logger->emerg('Emergency message');