|
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。
zip形式
tgz形式
[2004/01/30] :: phpPatterns()でLog4phpのサイトが紹介されています。こちらはホントにlog4jと同じですね。。。
「Java言語で学ぶデザインパターン入門」(ソフトバンクパブリッシング/\3,800/ISBN4-7973-1646-2)の著者である結城 浩さんのWebサイト(http://www.hyuki.com/)で知ったNull Objectパターンを使ったログ出力クラスです。
クラス図は以下のようになります。
[2002/04/02] Null Objectパターンとは、結城さんのサイトにもあるように、「同じインタフェース(API)を持ちながら、何も処理しないクラス」を利用したパターンのことを指します。log4pの場合は、LogNullOutputクラスが何も処理をしないクラスに相当します。また、Strategyパターンにもなっています。
LogOutputクラスは抽象クラスの * 位置づけ * です。PHPではJavaのような抽象クラス・メソッドは「実際は」作れませんので、あくまで形としてのクラスになります(実際、LogNullOutputクラスと等価です)。また、LogOutputクラスを継承してLogFileOutputクラスなどの具象クラスを作成しています。実際には、これらの具象クラスが使用されます。
また、このページからダウンロードできるアーカイブには、以下のような簡単なサンプルスクリプトも付けてますので、実際に試してみることができます。メソッドなどの詳細はAPIドキュメントを参照して、色々と試してみてください。
使えるかどうかは別問題として、作ってみてPHPでも(頑張れば?)色々とできそうだと実感しました。
●log4p_test.php
<?php
require_once "./Log4p.phl";
?>
<?php
$iter = 10;
$logLevel = LOG_INFO;
$log = &Log4p::getInstance($logLevel);
for ($i = 0; $i < $iter; $i++) {
$log->debug("\$i=" . $i);
$sum += $i;
$log->debug("\$sum=" . $sum);
}
echo "sum=" . $sum;
?>
●出力結果(LOG_INFO)
sum=45
●出力結果(LOG_DEBUG)
[DEBUG] $i=0
[DEBUG] $sum=0
[DEBUG] $i=1
[DEBUG] $sum=1
[DEBUG] $i=2
[DEBUG] $sum=3
[DEBUG] $i=3
[DEBUG] $sum=6
[DEBUG] $i=4
[DEBUG] $sum=10
[DEBUG] $i=5
[DEBUG] $sum=15
[DEBUG] $i=6
[DEBUG] $sum=21
[DEBUG] $i=7
[DEBUG] $sum=28
[DEBUG] $i=8
[DEBUG] $sum=36
[DEBUG] $i=9
[DEBUG] $sum=45
sum=45
|