日志类是我们使用框架中都不可缺少的一部分,因此我们需要认真对待我们的日志类。
首先在core\lib文件夹下建立log.php的配置文件,然后再建立一个存放我们所有的驱动文件,也建立在core\lib文件夹下,建立一个drive文件夹,因为我们的驱动可能会有很多,为了方便管理,我们就需要在drive文件夹下再建立一个log文件夹,存放所有的log驱动,然后再建立一个file.php。再接下来进行我们的操作。
1、在config\log.php中,写入的我们日志文件的存储类型及存储地址。
return array( 'DRIVE'=>'file', //日志驱动存储在我们的系统中。 'OPTION'=>array( 'PATH'=>JWW.'/log/' ) );2、再回到我们的core\lib\log.php中进行编码。在这个类中,我们需要做两件事。
1)确定日志的存储方式。
2)写日志。
在log类中,建立一个静态属性,去存放我们的类。其次使用一个初始化类去加载我们的存储方式。然后再进行写日志。
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; //p($class); } static public function log($name,$file='log'){ self::$class->log($name,$file); } }3、在core\lib\drive\log\file.php中进行编码。
调用我们的配置文件。use core\lib\config;这里呢是一个日志存储位置的确定。
namespace core\lib\drive\log; use core\lib\config; class file{ public $path; //日志存储位置 public function __construct(){ $conf = config::get('OPTION','log'); $this->path = $conf['PATH']; //p($this->path);die; } public function log($message,$file='log'){ //1、确定文件存储位置是否存在 // 新建目录 //2、写入日志 //p($this->path);die; 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).PHP_EOL,FILE_APPEND); } }FILE_APPEND: 使用 FILE_APPEND 可避免删除文件中已有的内容。
PHP_EOL:相当于换行符。在PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性。
上面部分完成后,在基础类中调用一下,检测是否将日志写入到文件中。
\core\lib\log::log('写入文件的内容','日志文件名称');
这样日志类也就完成了!