作为追踪记录以及调试bug的重要利器,日志在我们的编码当中扮演者不可缺少的角色
下面我们就在已有的框架中封装一个日志类来记录我们的重要操作!!
目录要求:
/core/lib下建立 log.php 文件
/根目录下建立log文件夹用来存放生成的日志文件
同级建立 drive/log文件夹并在其文件夹下建立 file.php 以及 mysql.php(驱动文件用来存放日志类型)
实现流程:
1、调用日志类初始方法加载配置文件确定所用驱动,
日志配置
core/config/log.php
2、再调用写入日志方法将记录以及所写日志文件传入
3、驱动文件首先在实例化的同时加载日志文件存储文件位置并确定其路径
4、创建对应的日志文件并将日志记录写入到所属日志文件中完成操作!!!
实现代码:
/core/lib/log.php
<?php
namespace core\lib;
use core\lib\conf;
class log{
/**
* 1、确定日志存储方式
*
* 2、写日志
*/
//设置驱动
static $class;
static public function init(){
//确定存储方式
$drive = conf::get('DRIVE','log');
$class = '\core\lib\drive\log\\'.$drive;
// \core\drive\log\file
self::$class = new $class;
}
//确定写入日志的文件以及内容
static public function log($message,$file = 'log'){
self::$class->log($message,$file);
}
}
?>
core/conf/log.php 日志配置文件
<?php
return array(
'DRIVE' => 'file',
'OPTION' => array(
'PATH' => PATH.'/log/'
)
);
?>
core/lib/drive/log/file.php 日志驱动文件
<?php
namespace core\lib\drive\log;
use core\lib\conf;
class file
{
//日志存储位置
public $path;
public function __construct()
{
$option = conf::get('OPTION','log');
$this->path = $option['PATH'];
// p($this->path);
}
public function log($message,$file ='log')
{
/**
* 1、确定文件存储位置是否存在
* 2、写入日志
*/
if(!is_dir($this->path.date("YmdH"))){
mkdir($this->path.date("YmdH"),'0777',true);
}
return file_put_contents($this->path.date("YmdH").'/'.$file.'.php',date('Y-m-d H:i:s').json_encode($message),FILE_APPEND);
// p($message);
}
}
?>
实现效果: