thinkphp5里面默认存放在File文件系统中,我们可以修改储存位置,下面是修改成mongoDb的例子:
一、在config.php里面的log数组修改File成你的日志类(我以log目录下面的Mongo类为例):
'log' => [ 'type' => '\\log\\Mongo', 'level' => ['error','sql','info'], // 日志开关 1 开启 0 关闭 'switch' => 1, ],
二、编写对应的类:
<?php
namespace log;
class Mongo
{
// 实例化并传入参数,主要用于动态化配置
public function __construct($config = [])
{
}
/**
* 日志写入接口
* @access public
* @param array $log 日志信息
* @param bool $depr 是否写入分割线
* @return bool
*/
public function save(array $log = [], $depr = true)
{
$arr = [];
foreach ($log as $type => $error) {
foreach ($error as $msg) {
$arr[] = [
'addTime' => date('Y-m-d H:i:s'),
'type' => $type,
'error' => $msg
];
}
}
$this->add($arr);
return true;
}
//操作写入数据库
private function add($arr)
{
// 连接MongoDB,实际上用上面构造还是动态化的配置哈
$manager = new \MongoDB\Driver\Manager("mongodb://localhost:27017");
$database = "yyz";
$collection = "error_log";
$res = null;
foreach ($arr as $item) {
// 构建插入操作
$bulk = new \MongoDB\Driver\BulkWrite;
$bulk->insert($item);
// 执行插入操作
$res[] = $manager->executeBulkWrite("$database.$collection", $bulk);
}
return true;
}
}打开MongoDb数据库查看结果:

也就是这个怎么处理日志就自定义了,可以异步发送到远程的日志系统......