November 28, 2011

FuelPHPのLogクラスを使いやすくする

2011/12/14 追記
拡張したLogクラスを改良して、掲載ソースを更新しました。


例えばdebugログの出力は
Log::debug('DEBUG');

となります。

これでも良いのですが、Logクラスは頻繁に使用するはずなので
Log::d('DEBUG');
のようにして使いたい。

という訳で、拡張します。

(1)
app/classes/log.phpを作成。
<?php

class Log extends Fuel\Core\Log
{
    public static function i($msg, $method = null)
    {
        if(!is_scalar($msg)) $msg = print_r($msg,true);
        return parent::info($msg, $method);
    }
    public static function d($msg, $method = null)
    {
        if(!is_scalar($msg)) $msg = print_r($msg,true);
        return parent::debug($msg, $method);
    }
    public static function w($msg, $method = null)
    {
        if(!is_scalar($msg)) $msg = print_r($msg,true);
        return parent::warning($msg, $method);
    }
    public static function e($msg, $method = null)
    {
        if(!is_scalar($msg)) $msg = print_r($msg,true);
        return parent::error($msg, $method);
    }
} 

(2)
app/bootstrap.phpのAutoloader::add_classesにapp/classes/log.phpを追加。
Autoloader::add_classes(array(
    // Add classes you want to override here
    // Example: 'View' => APPPATH.'classes/view.php',
    'Log' => APPPATH.'classes/log.php',
));

(3)
これで、
Log::d('DEBUG');
とかで使用出来ます。

余談ですが、ログファイルへの出力ログレベルはapp/config/config.phpの'log_threshold'です。
環境別に切り替えるには、app/[環境別ディレクトリ]/config.phpを作成すればOKです。
return array(
    'log_threshold'    => Fuel::L_DEBUG,
);

/* End of file config.php */
今回は書いていませんが、'base_url'とかもここに入ってくるでしょう。



参考:
http://docs.fuelphp.com/general/extending_core.html

No comments:

Post a Comment