日志类呢可能存在文件中,也可能存在数据库中,也可能存在缓存中,下面讲下日志类是怎么存在文件中的
首先在\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;
self::$class = new $class;
}
static public function log($name ,$file = 'log')
//调用该方法,在关键位置打上日志
{
self::$class->log($name ,$file);
}
}
然后在\core\lib下建立配置文件夹写入file.php
<?php
namespace core\lib\drive\log;
use core\lib\conf;
class file
{
//把日志存入文件中
public $path; //日志存储位置
public function __construct()
{
$conf = conf::get('OPTION','log'); //初始化加载
$this->path = $conf['PATH'];
}
public function log($message,$file = 'log')
{
/**
* 1.确定存储位置是否存在
* 2. 写日志
*/
// p($this->path);exit;
if(!is_dir($this->path.date('YmdH'))){ //判断是否存在该路径 每小时产生日志文件
mkdir($this->path.date('YmdH'),'0777',true); //没有则给权限777
}
// p($message);
// p($this->path.$file.'.php');
return file_put_contents($this->path.date('YmdH').'/'.$file.'.php',date('Y-m-d H:i:s').json_encode($message).PHP_EOL,FILE_APPEND);
//因为有时日志为数组压成json串 PHP_EOL 换行 FILE_APPEND 追加
// return file_put_contents($this->path.date('YmdH').'/'.$file.'.php',$message,FILE_APPEND);
}
}
然后验证一下,检测一下我们的\log目录下是否有此文件
下面我们可以在调用
\core\lib\log::init(); //初始化
\core\lib\log::log('ctrl:'.$ctrlClass.' '.'action:'.$action); //写入控制器方法
在我们想要打上日志的地方写入日志!