PHP将日志记录到日志文件

已邀请:
匿名用户

匿名用户

赞同来自:

下面代码中的writelog()函数是一个自定义函数,用来记录日志。此函数有两个参数:
  • $filename:记录到的文件名,最终的文件为“$filename+年份+月份+.log”,记录到logs目录下;
  • $msg:要记录的内容,前面不需要加时间,只要消息内容,函数记录时会在消息前自动加上时间。

 
函数代码和用法举例:
<?php
//设置默认时区,如果已经设置,可删除下面一行
date_default_timezone_set('PRC'); 

//记录日志函数
function writelog($filename, $msg) {
    $file = dirname(__FILE__) . '/logs/' . $filename . date('Ym') . '.log';
    !is_dir(dirname($file)) && mkdir(dirname($file), 0777, true);
    $handle = fopen($file, 'a');
    flock($handle, LOCK_EX);
    fwrite($handle, sprintf("%s %s\r\n", date('Y-m-d H:i:s',time()), $msg));
    flock($handle, LOCK_UN);
    fclose($handle);
}

// 记录测试, 下面日志将会记录到站点目录"logs"下的"net201610.log" 
writelog('net', '错误.爱E族,数据库连接失败,http://aiezu.com/php/');
writelog('net', '警告,爱E族,数据库连接太多,http://aiezu.com/');
writelog('net', '错误,爱E族,服务器无响应,http://aiezu.com/question/79.html');

 测试完成后,在站点目录下“logs/net201610.log”(文件名为年份+月份)的日志内容为:
2016-10-31 15:05:22 错误.爱E族,数据库连接失败,http://aiezu.com/php/
2016-10-31 15:05:22 警告,爱E族,数据库连接太多,http://aiezu.com/
2016-10-31 15:05:22 错误,爱E族,服务器无响应,http://aiezu.com/question/79.html

要回复问题请先登录注册