ぶろぐ

日記です

PHPでlog


error_log($string);
な関数が標準で用意されているようで。
http://php.net/manual/ja/function.error-log.php

php.iniのerror_logパラメーターで出力先が設定されているよう。
設定例

error_log = /var/log/php.log

適当に動かしてみた。

[22-May-2012 03:01:12] index.php:: start
[22-May-2012 03:01:12] index.php:: end
[22-May-2012 03:02:55] index.php:: start
[22-May-2012 03:02:55] index.php:: end

ラッパー1枚噛ます?

  • アプリ事に出力するログファイル分けたい
  • debugモード、errorモードで分けたい
  • ローテートどうしよう

ローテートはlinuxのlogrotateを使うみたい。

ログの出力先アプリでを変えたい

LogUtil::log($hogehoge, $level);
作りましょうか??

class LogUtil {

    // 別途設定ファイルで持ちたい
    const level = 'debug';
    const file = '/var/log/php/hogeApp/hogeApp.log';
    const mail = 'hogehoge@hoge.hogehogehoge';

    static function error($msg) {
            error_log($msg, 3, self::file);
     }

    static function debug($msg) {
            if(self::level === 'debug') {
                    error_log($msg, 3, self::file);
            }
    }

    static function mail($msg) {
        error_log($msg, 1, self::mail);
    }

}   

や。。。動かしてないけどさ。。
書くだけ書いた。
アプリで

LogUtil::log("index.php:: hoge分岐 in", 'debug');
if($hoge === 'error') {
    die('まじか');
    LogUtil::log("index.php:: hogefunction() ぬるぽ");
}
LogUtil::log("index.php:: hoge分岐 out", 'debug');

とかいう感じで使ったらいいっすかね。
サーバーの設定無しで、アプリだけの設定で動かしたい気がするけどみんなどうしているのかな。

追記

ビミョ、書き換えよ。
LogUtils::error($msg);
LogUtils::debug($msg);
LogUtils::mail($msg);
これだけでいーや
寧ろUtilsもいらない。。Log::error($msg);でいい気がする。。
Log::info($msg);いるかな?
log4php熱いのかな?