每个框架都有日志类,日志类非常的重要,接下来要在我们的框架中加入日志类
首先我们要对日志类有一个规划
1、确定日志的存储方式,例如:存到文件中、存到数据库中
2、写日志
我们这里确定为把日志存到文件系统中
首先我们在lib目录下建一个log.php用来确定存储方式
<?php namespace core\lib; class log { static $class; /** * 1、确定日志存储方式 * 2、写日志 */ static public function init() { //确定存储方式 $drive = config::get('DRIVE','log'); $class = '\core\lib\drive\log\\'.$drive; self::$class = new $class; } static public function log($name,$file = 'log') { //写日志 self::$class->log($name,$file); } }
在根目录下建一个log的文件夹用来存放日志文件
然后在lib下建一个dirve文件夹 用来存放我们框架所要用到的驱动文件
在dirve中建一个file.php作为日志的驱动文件
<?php namespace core\lib\dirve\log; //日志存在文件系统中 use core\lib\config; class file { public $path;//日志存储位置 public function __construct() { $conf = config::get('OPTION','log'); $this->path = $conf['PATH']; } public function log($message,$file = 'log') { /** * 1、确定文件的存储位置是否存在 * 新建目录 * 2、写入日志 */ if(!is_dir($this->path.date('YmdH'))) { mkdir($this->path.date('YmdH'),'0777',true); } file_put_contents($this->path.date('YmdH').'/'.$file.'.php',date('y-m-d H:i:s').json_encode($message).PHP_EOL,FILE_APPEND); } }然后我们在core.php中的run方法中加入日志,使日志中显示访问过的控制器与方法
static public function run() { $route = new route();//实例化路有类 $controller = $route->ctrl;//获取控制器名 $action = $route->action;//获取方法名 $ctrlfile = APP.'/controllers/'.ucfirst($controller).'Controller.php';//控制器文件路径 $ctrlClass = '\\'.MODULE.'\controllers\\'.ucfirst($controller).'Controller'; if(is_file($ctrlfile)){//验证这个文件是否存在 include $ctrlfile;//包含控制器文件 $ctrl = new $ctrlClass();//实例化控制器 $ctrl->$action();//调用方法 log::init();//将访问的控制器和方法写入到log文件中 log::log('controller:'.$controller.' '.'action:'.$action); } else { throw new \Exception('找不到控制器'.$ctrlfile); } }这样,我们的日志类就配置完成了