そこで私は最近、log4 *パッケージがPHPで利用可能であることを発見しました。これを見て、log4php Webサイトから最新のものを熱心にダウンロードし、インストール手順に従いました。指示は、tarパッケージをダウンロードしてuntarし、選択した場所に次のディレクトリを配置することを示しています:log4php / src / main / php
したがって、の内容をlog4php/src/main/php
lib/log4phpの下のlibディレクトリにコピーしました。
スクリプトでは、必要に応じて、「Logger.php」クラスが必要であり、アペンダーを管理するためのプロパティファイルを指定しました。プロパティファイルlog4php.propertiesは、私のファイルシステムの「/home1/ioforgec/www/devlab/pnotes/config/log4php.properties」にあります。
ログファイルの内容は次のとおりです。
#
# Example Logger
#
log4php.appender.EA1 = LoggerAppenderConsole
log4php.appender.EA1.target = STDOUT
log4php.appender.EA1.layout = LoggerLayoutPattern
log4php.appender.EA1.ConversionPattern = "%m"
log4php.appender.EA1.threshold = FATAL
log4php.exampleLogger = FATAL, EA1
だからここに実装する私のスクリプトのコピーがあります(多かれ少なかれlog4php機能を「ラップ」します):
<?php
require_once('/home1/ioforgec/www/devlab/pnotes/lib/log4php/Logger.php');
class LogUtil
{
public $logger;
public $properties_file = "/home1/ioforgec/www/devlab/pnotes/config/log4php.properties";
public static function logExample($msg)
{
Logger::configure($properties_file);
$logger = Logger::getLogger("example");
$logger->debug("Shouldnt see this print because of config max level FATAL");
$logger->fatal($msg);
}
}
?>
これが正しく機能していることをテストするために、次のスクリプトは上記のLogUtil.phpを呼び出します。
#!/usr/bin/php
<?php
require_once("lib/utils/LogUtil.php");
LogUtil::logExample("example message");
?>
したがって、メッセージをプレーンメッセージとしてフォーマットするようにサンプルロガーを構成しているにもかかわらず、ロガー宣言だけでなく、thresholdコマンドでも、ロガーのレベルを最大FATALに設定しているにもかかわらず、コンソールへの出力は私に見えますデフォルトのルートロガーのように:
Mon Oct 18 20:30:05 2010,705 [827] DEBUG example - Shouldnt see this print because of config max level FATAL
Mon Oct 18 20:30:05 2010,711 [827] FATAL example - example message
指定されたプレーンフォーマットなしのprintステートメントが表示されます。2つのprintステートメントが表示されます。debugprint(ロガー構成でFATALが設定されているために出力されないはずです。FATALはDEBUGよりもはるかに高いです)。
一体何が間違っているのですか?私はおそらく考えられるセットアップのすべての組み合わせを試しました。誰か提案はありますか?
編集-更新-これはまだ問題です。進捗はありません。
Edit2-本当に?このフォーラムの誰も、この非常に人気のあるロギングパッケージとその化身をPHPモジュールとして使用しようとしたことがありませんか?
log4phpユーザーのメーリングリストを含め、考えられるすべての方法で質問に回答してもらいました。