[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Log-Formatters.xml
blob9987f3510be08c7b295ac7623c15f0aa4b7e7715
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20792 -->
4 <sect1 id="zend.log.formatters">
5   <title>フォーマッタ</title>
6   <para>
7     フォーマッタの役割は、<code>event</code> 配列からイベントの内容を受け取り、
8     それを文字列としてフォーマットして出力することです。
9   </para>
11   <para>
12     ライターによっては行指向ではないものもあります。そのような場合はフォーマッタは使用できません。
13     たとえばデータベースライターなどがその例で、
14     これはイベントの項目を直接データベースのカラムに書き出します。
15     フォーマッタをサポートできないライターに対してフォーマッタを設定しようとすると、
16     例外がスローされます。
17   </para>
19   <sect2 id="zend.log.formatters.simple">
20     <title>単純なフォーマット</title>
21     <para>
22       <classname>Zend_Log_Formatter_Simple</classname> はデフォルトのフォーマッタです。
23       これは、何もフォーマッタを指定しなかった場合に自動的に設定されます。
24       デフォルトの設定は、次のようになります。
26       <programlisting language="php"><![CDATA[
27 $format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
28 $formatter = new Zend_Log_Formatter_Simple($format);
29 ]]></programlisting>
30     </para>
32     <para>
33       フォーマッタを個々のライターオブジェクトに対して設定するには、ライターの
34       <methodname>setFormatter()</methodname> メソッドを使用します。
36       <programlisting language="php"><![CDATA[
37 $writer = new Zend_Log_Writer_Stream('php://output');
38 $formatter = new Zend_Log_Formatter_Simple('hello %message%' . PHP_EOL);
39 $writer->setFormatter($formatter);
41 $logger = new Zend_Log();
42 $logger->addWriter($writer);
44 $logger->info('there');
46 // "hello there" と出力します
47 ]]></programlisting>
48     </para>
50     <para>
51       <classname>Zend_Log_Formatter_Simple</classname> のコンストラクタには、
52       パラメータとして書式指定文字列を渡すことができます。
53       この文字列には、キーをパーセント記号で囲んだもの
54       (例. <code>%message%</code>) を含めます。
55       書式指定文字列には、イベントデータの配列の任意のキーを含めることができます。
56       デフォルトのキーを取得するには、<classname>Zend_Log_Formatter_Simple</classname>
57       の定数 DEFAULT_FORMAT を使用します。
58     </para>
59   </sect2>
61   <sect2 id="zend.log.formatters.xml">
62     <title>XML へのフォーマット</title>
63     <para>
64       <classname>Zend_Log_Formatter_Xml</classname> は、ログのデータを XML 文字列に変換します。
65       デフォルトでは、イベントデータ配列のすべての項目を自動的に記録します。
67       <programlisting language="php"><![CDATA[
68 $writer = new Zend_Log_Writer_Stream('php://output');
69 $formatter = new Zend_Log_Formatter_Xml();
70 $writer->setFormatter($formatter);
72 $logger = new Zend_Log();
73 $logger->addWriter($writer);
75 $logger->info('通知メッセージ');
76 ]]></programlisting>
77     </para>
79     <para>
80       上のコードの出力は、次のような XML になります (可読性を確保するため空白を補っています)。
82       <programlisting language="xml"><![CDATA[
83 <logEntry>
84   <timestamp>2007-04-06T07:24:37-07:00</timestamp>
85   <message>通知メッセージ</message>
86   <priority>6</priority>
87   <priorityName>INFO</priorityName>
88 </logEntry>
89 ]]></programlisting>
90     </para>
92     <para>
93       ルート要素を変更したり、XML の要素名とイベントデータ配列の項目名の対応を指定したりすることも可能です。
94       <classname>Zend_Log_Formatter_Xml</classname> のコンストラクタの最初のパラメータには、
95       ルート要素の名前を指定します。また、
96       二番目のパラメータには要素名の対応を表す連想配列を指定します。
98       <programlisting language="php"><![CDATA[
99 $writer = new Zend_Log_Writer_Stream('php://output');
100 $formatter = new Zend_Log_Formatter_Xml('log',
101                                         array('msg' => 'message',
102                                               'level' => 'priorityName')
103                                        );
104 $writer->setFormatter($formatter);
106 $logger = new Zend_Log();
107 $logger->addWriter($writer);
109 $logger->info('通知メッセージ');
110 ]]></programlisting>
112       上のコードは、ルート要素の名前をデフォルトの
113       <code>logEntry</code> から <code>log</code> に変更します。また、要素名
114       <code>msg</code> をイベントデータの項目 <code>message</code> に対応させます。
115       出力結果は次のようになります。
117       <programlisting language="xml"><![CDATA[
118 <log>
119   <msg>通知メッセージ</msg>
120   <level>INFO</level>
121 </log>
122 ]]></programlisting>
123     </para>
125   </sect2>
126 </sect1>