ログとPEAR_ErrorStackの連動

PEAR_ErrorStackでは、ロガーを指定することでエラーのpushでログを出力するように 指定することができます。

例えば、PearのLogパッケージを指定し、エラーをスタックに積みログをPear::Logにログを 出力します。

$stack =& PEAR_ErrorStack::singleton('MyPackage');
$objLog =& Log::singleton('file','logfile.log','ident');

$stack->setDefaultLogger($objLog);
$stack->push(MYPACKAGE_ERROR_DBERROR, 'error',
    array('MySQL' => 'DBエラーメッセージ'
          ,'SQL' => 'エラー情報'),
    'Error:DB %MySQL% : SQL Error:%SQL%');

PEAR_ErrorStackのエラーレベル(上記の場合、error)は、Pear::Logのレベル(定数)に 変換されます。

$levels = array(
    'exception' => PEAR_LOG_CRIT,
    'alert' => PEAR_LOG_ALERT,
    'critical' => PEAR_LOG_CRIT,
    'error' => PEAR_LOG_ERR,
    'warning' => PEAR_LOG_WARNING,
    'notice' => PEAR_LOG_NOTICE,
    'info' => PEAR_LOG_INFO,
    'debug' => PEAR_LOG_DEBUG);

loggerの設定方法は、2つの方法があります。setDefaultLogger()関数とsetLogger()関数です。

setDefaultLogger()関数は、$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER']に格納します。

setLogger()関数は、メンバ変数の$_loggerにloggerを格納します。