ログとPEAR_ErrorStackの連動

メモ:  Category:pear

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 を格納します。

bluenote by BBB