thinkphp拆分出日誌函數

在做ecshop時發現沒有順手的打印日誌的地方,就去把thinkphp裏輸出日誌的地方簡單的拆了出來,代碼如下:

/**
     * 日誌直接寫入
     * @static
     * @access public
     * @param string $message 日誌信息
     * @param string $level  日誌級別
     * @param integer $type 日誌記錄方式
     * @param string $destination  寫入目標
     * @param string $extra 額外參數
     * @return void
     */
    function log_write($message,$level='debug',$type='',$destination='',$extra='') {
        $format = '[ c ]';
        $log_file_size = '2097152';
        $now = date($format);
        $type = $type?$type:3;
        if(3 == $type) { // 文件方式記錄日誌
            $log_path = ROOT_PATH . 'data/log/';
            if(!is_readable($log_path))  
            {  
                is_file($log_path) or mkdir($log_path,0700);  
            } 
            if(empty($destination))
                $destination = $log_path.date('y_m_d').'.log';
            //檢測日誌文件大小,超過配置大小則備份日誌文件重新生成
            if(is_file($destination) && floor($log_file_size) <= filesize($destination) )
                  rename($destination,dirname($destination).'/'.time().'-'.basename($destination));
        }
        error_log("{$now} {$level}: {$message}\r\n", $type,$destination,$extra );
    }

備註下 error_log函數,發送一個錯誤信息到Web服務器的錯誤日誌,一個TCP的端口或者是一個文件:
需要先開啓,編輯php.ini,將log_errors設置爲on:
log_errors = On,一般默認都開啓了
可能的信息類型有以下幾個:
0 message 發送到 PHP 的系統日誌。 這是個默認的選項。iis服務器運行調試php程序錯誤信息生成log文件在哪裏。
1 message 發送到參數 destination 設置的郵件地址。 第四個參數 extra_headers 只有在這個類型裏纔會被用到。
2 不再是一個選項。
3 message 被髮送到位置爲 destination 的文件裏。 字符 message 不會默認被當做新的一行,而是追加到行末。
4 message 直接發送到 SAPI 的日誌處理程序中。
destination 目標。它的含義描述於以上,由 message_type 參數所決定。
extra_headers 額外的頭。當 message_type 設置爲 1 的時候使用。 該信息類型使用了 mail() 的同一個內置函數。
返回值 成功時返回 TRUE, 或者在失敗時返回 FALSE。
這裏設置的就是3,將日誌發送到文件裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章