<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect1 id="zend.log.filters">
    <title>フィルタ</title>

    <para>
        フィルタオブジェクトは、ログに書き出されるメッセージをブロックします。
    </para>

    <sect2 id="zend.log.filters.all-writers">
        <title>すべてのライターに対するフィルタリング</title>

        <para>
            すべてのライターの前にフィルタをかけるには、任意の数のフィルタを
            <methodname>addFilter()</methodname> メソッドでログオブジェクトに追加します。
        </para>

        <programlisting language="php"><![CDATA[
$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);

// ブロックされます
$logger->info('通知メッセージ');

// 記録されます
$logger->emerg('緊急メッセージ');
]]></programlisting>

        <para>
            ログオブジェクトにフィルタを追加すると、
            フィルタを全て通過したものだけをライターが受け取るようになります。
        </para>
    </sect2>

    <sect2 id="zend.log.filters.single-writer">
        <title>ライターのインスタンスに対するフィルタリング</title>

        <para>
            特定のライターインスタンスに対してだけフィルタをかけるには、ライターの
            <methodname>addFilter()</methodname> メソッドを使用します。
        </para>

        <programlisting language="php"><![CDATA[
$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);

// writer2 にのみフィルタをかけます
$filter = new Zend_Log_Filter_Priority(Zend_Log::CRIT);
$writer2->addFilter($filter);

// writer1 には記録され、writer2 からはブロックされます
$logger->info('通知メッセージ');

// 両方のライターに記録されます
$logger->emerg('緊急メッセージ');
]]></programlisting>
    </sect2>
</sect1>
