| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="zend.log.formatters">
- <title>フォーマッタ</title>
- <para>
- フォーマッタの役割は、<property>event</property> 配列からイベントの内容を受け取り、
- それを文字列としてフォーマットして出力することです。
- </para>
- <para>
- ライターによっては行指向ではないものもあります。そのような場合はフォーマッタは使用できません。
- たとえばデータベースライターなどがその例で、
- これはイベントの項目を直接データベースのカラムに書き出します。
- フォーマッタをサポートできないライターに対してフォーマッタを設定しようとすると、
- 例外がスローされます。
- </para>
- <sect2 id="zend.log.formatters.simple">
- <title>単純なフォーマット</title>
- <para>
- <classname>Zend_Log_Formatter_Simple</classname> はデフォルトのフォーマッタです。
- これは、何もフォーマッタを指定しなかった場合に自動的に設定されます。
- デフォルトの設定は、次のようになります。
- </para>
- <programlisting language="php"><![CDATA[
- $format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
- $formatter = new Zend_Log_Formatter_Simple($format);
- ]]></programlisting>
- <para>
- フォーマッタを個々のライターオブジェクトに対して設定するには、ライターの
- <methodname>setFormatter()</methodname> メソッドを使用します。
- </para>
- <programlisting language="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Simple('hello %message%' . PHP_EOL);
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('there');
- // "hello there" と出力します
- ]]></programlisting>
- <para>
- <classname>Zend_Log_Formatter_Simple</classname> のコンストラクタには、
- パラメータとして書式指定文字列を渡すことができます。
- この文字列には、キーをパーセント記号で囲んだもの
- (例. <command>%message%</command>) を含めます。
- 書式指定文字列には、イベントデータの配列の任意のキーを含めることができます。
- デフォルトのキーを取得するには、<classname>Zend_Log_Formatter_Simple</classname>
- の定数 DEFAULT_FORMAT を使用します。
- </para>
- </sect2>
- <sect2 id="zend.log.formatters.xml">
- <title>XML へのフォーマット</title>
- <para>
- <classname>Zend_Log_Formatter_Xml</classname> は、ログのデータを <acronym>XML</acronym> 文字列に変換します。
- デフォルトでは、イベントデータ配列のすべての項目を自動的に記録します。
- </para>
- <programlisting language="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Xml();
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('通知メッセージ');
- ]]></programlisting>
- <para>
- 上のコードの出力は、次のような <acronym>XML</acronym> になります (可読性を確保するため空白を補っています)。
- </para>
- <programlisting language="xml"><![CDATA[
- <logEntry>
- <timestamp>2007-04-06T07:24:37-07:00</timestamp>
- <message>通知メッセージ</message>
- <priority>6</priority>
- <priorityName>INFO</priorityName>
- </logEntry>
- ]]></programlisting>
- <para>
- ルート要素を変更したり、<acronym>XML</acronym> の要素名とイベントデータ配列の項目名の対応を指定したりすることも可能です。
- <classname>Zend_Log_Formatter_Xml</classname> のコンストラクタの最初のパラメータには、
- ルート要素の名前を指定します。また、
- 二番目のパラメータには要素名の対応を表す連想配列を指定します。
- </para>
- <programlisting language="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Xml('log',
- array('msg' => 'message',
- 'level' => 'priorityName')
- );
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('通知メッセージ');
- ]]></programlisting>
- <para>
- 上のコードは、ルート要素の名前をデフォルトの
- <property>logEntry</property> から <property>log</property> に変更します。また、要素名
- <property>msg</property> をイベントデータの項目 <property>message</property> に対応させます。
- 出力結果は次のようになります。
- </para>
- <programlisting language="xml"><![CDATA[
- <log>
- <msg>通知メッセージ</msg>
- <level>INFO</level>
- </log>
- ]]></programlisting>
- </sect2>
- </sect1>
|