PHP error_log 関数でファイルへログ出力

error_log 関数でファイルへログ出力ができるので、クラスとして作成してみました。

<?php
#
# Logger
#
class MyLogger
{
    private $log_dir;
    private $log_fname;

    public function __construct($baseDir, $fname) {
        $this->log_dir = $baseDir;
        $this->log_fname = $fname;
    }

    public function Error($msg)
    {
        $log = "Error: ";
        $this->Output($log, $msg);
    }

    public function Info($msg)
    {
        $log = "Info: ";
        $this->Output($log, $msg);
    }

    protected function GetFileName()
    {
        $today = date("Ymd");
        return $this->log_dir."/".$today."_".$this->log_fname;
    }

    protected function Output($str, $msg)
    {
        $date = date("Y-m-d H:i:s");

        if (is_array($msg) || is_object($msg))
        {
            $log = "[".$date."]".$str.PHP_EOL;
            $log .= print_r($msg, true);
            $log .= PHP_EOL;
        }
        else
        {
            $log = "[".$date."]".$str.$msg.PHP_EOL;
        }
        error_log($log, 3, $this->GetFileName());
    }
}
// 実行
$log = new MyLogger('/tmp', 'test.log');
$log->Info('参考までに。');
$log->Error('大変だ。');
$arr = array('123','abc','xyz');
$log->Info($arr);
?>

出力例:

ログファイル名:/tmp/20140702_test.log
[2014-07-02 11:21:11]Info: 参考までに。
[2014-07-02 11:21:11]Error: 大変だ。
[2014-07-02 11:21:11]Info: 
Array
(
    [0] => 123
    [1] => abc
    [2] => xyz
)

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です