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