关闭

thinkphp拆分出日志函数

标签: thinkphp日志函数
171人阅读 评论(0) 收藏 举报

在做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,将日志发送到文件里。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11087次
    • 积分:316
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章分类