作者:韩尕猫_345 | 来源:互联网 | 2023-06-23 00:47
1、服务器mongodb安装(下载地址https:www.mongodb.comtrydownloadcommunity)yuminstall-yhttps:repo.mongod
1、服务器mongodb安装(下载地址https://www.mongodb.com/try/download/community)
yum install -y https://repo.mongodb.org/yum/redhat/7/mongodb-org/6.0/x86_64/RPMS/mongodb-org-server-6.0.1-1.el7.x86_64.rpm
启动服务
systemctl start mongod.service
查询服务状态
systemctl status mongod.service
停止服务
systemctl stop mongod.service
设置服务自启动
systemctl enable mongod.service
停止服务自启动
systemctl idsable mongod.service
2、php mongodb扩展安装
用宝塔装的,这里有问题,mongo是强类型数据库,写入时间格式不能是普通字符串要经过mongoDate类处理才能正常筛选时间,而我装的扩展力不存在这个类,所以这里退而求其次存储时间戳,往后对于日志的查看稍有不便,暂时没时间折腾了,先这样
3、安装mongodb依赖
composer require topthink/think-mOngo=2.0.*
4、代码配置
数据库连接配置,/config/database.php
'mongo' => [
// 数据库类型
'type' => '\think\mongo\Connection',
// 设置查询类
'query' => '\think\mongo\Query',
// 服务器地址
'hostname' => '127.0.0.1',
// 集合名
'database' => 'wms',
// 用户名
'username' => '',
// 密码
'password' => '',
// 端口
'hostport' => '27017',
],
tp框架全局异常接管配置/config/app.php
'exception_handle' => '\\app\\common\\HttpException'
异常接管类
namespace app\common;
use think\Request;
class HttpException extends \think\exception\Handle
{
public function render(\Exception $e)
{
$param = \think\facade\Request::param();
$url = \think\facade\Request::url();
\app\common\model\MongoError::mongoError($e->getMessage(), $e->getTrace(), $e->getFile(), $e->getLine(), $url, $param);
// 其他错误交给系统处理
return parent::render($e);
}
}
mongo集合所对应的模型类
namespace app\common\model;
use think\Model;
class MongoError extends Model
{
protected $cOnnection= 'mongo';
protected $table = 'error';
/**
* Desc:Desc:写入error日志
* Author:glt 2022/9/17 14:16
* @param $msg
* @param $trace
* @param $file
* @param $line
* @param $url
* @param $param
* @return int|string
*/
public static function mongoError($msg, $trace, $file, $line, $url, $param)
{
return self::insert(['msg' => $msg, 'trace' => $trace, 'file' => $file, 'line' => $line, 'param' => $param, 'url' => $url, 'add_time' => time()]);
}
}
至此,完工。项目中任意一处代码报错都会触发异常,将异常信息保存到mongo中,附带请求地址、错误信息、请求参数等,目的是更方便更精准的定位bug