ログ出力
ログ出力 – 導入
概要
バージョン 1.5.0 以降、PEAR::Auth
の内部動作のログを取得する機能が追加されました。これは
PEAR::Log
およびそのログオブザーバコンポーネントを用いて実装されています。
Auth は二段階のログメッセージを提供しています。
これらはそれぞれ、Log における優先度
PEAR_LOG_INFO および PEAR_LOG_DEBUG
に対応しています。
PEAR_LOG_INFO のメッセージには、
Auth が行ったことについての基本的な情報が含まれます。
たとえばユーザの認証に成功した/失敗した、
ログイン画面をレンダリングした
などです。
PEAR_LOG_DEBUG のメッセージには、
Auth の内部でおこっていることの詳細情報が含まれます。
たとえばどんな関数がコールされたか、認証メソッド内でのロジックの追跡、
データベースバックエンドに対して実行された SQL クエリなどです。
例
PEAR::Auth からログにアクセスする基本例
<?php
require_once "Auth.php";
require_once 'Log.php';
require_once 'Log/observer.php';
// ログイン画面を表示するコールバック関数
function loginFunction($username = null, $status = null, &$auth = null)
{
/*
* HTML 出力を変更し、作成するアプリケーションに
* あわせるようにします
*/
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">";
echo "ユーザ名: <input type=\"text\" name=\"username\"><br/>";
echo "パスワード: <input type=\"password\" name=\"password\"><br/>";
echo "<input type=\"submit\">";
echo "</form>";
}
class Auth_Log_Observer extends Log_observer {
var $messages = array();
function notify($event) {
$this->messages[] = $event;
}
}
$options = array(
'enableLogging' => true,
'cryptType' => 'md5',
'users' => array(
'guest' => md5('password'),
),
);
$a = new Auth("Array", $options, "loginFunction");
$infoObserver = new Auth_Log_Observer(PEAR_LOG_INFO);
$a->attachLogObserver($infoObserver);
$debugObserver = new Auth_Log_Observer(PEAR_LOG_DEBUG);
$a->attachLogObserver($debugObserver);
$a->start();
if ($a->checkAuth()) {
/*
* サイトに出力する内容をここに書きます
*/
print "認証に成功しました。<br/>";
}
print '<h3>ログ出力</h3>'
.'<b>PEAR_LOG_INFO レベルのメッセージ</b><br/>';
foreach ($infoObserver->messages as $event) {
print $event['priority'].': '.$event['message'].'<br/>';
}
print '<br/>'
.'<b>PEAR_LOG_DEBUG レベルのメッセージ</b><br/>';
foreach ($debugObserver->messages as $event) {
print $event['priority'].': '.$event['message'].'<br/>';
}
print '<br/>';
?>
ログ機能を有効にするには、オプションの配列で "enableLogging"
に TRUE を設定し、それを Auth のコンストラクタの二番目の引数として渡します。
Auth のログメッセージを取得するには、
Log_Observer を継承したクラスを作成し、
notify() 関数を実装してそこでログメッセージを処理します。
定義した新しい
Log_Observer のインスタンスを
Auth::attachLogObserver()
に渡します。
Log_Observer で取得するメッセージの型を絞るには、
PEAR_LOG_INFO あるいは PEAR_LOG_DEBUG
を Log_Observer への最初のパラメータに指定します。
デフォルトは PEAR_LOG_INFO です。
絞込みの詳細については、Log
のドキュメント を参照ください。
<?php
$observer = new My_Log_Observer(PEAR_LOG_DEBUG);
?>
Note
このコンテナは、バージョン 1.5.0 以降で使用できます。