thinkphp5.0修改日志存放到mongoDb数据库或者其他地方

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数据库查看结果:

微信截图_20230607224133.png


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

评论/留言