日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

yii输出mysql查询日志_Yii2框架设置错误日志输出到日志或数据库

發布時間:2023/12/4 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii输出mysql查询日志_Yii2框架设置错误日志输出到日志或数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設置Yii的錯誤日志,可按照設置錯誤級別輸入到日志或數據庫中。

對yii\log\FileTarget做了重寫。

1、設置common/config/main.php

$db = require(__DIR__ . '/db.php');

return [

'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',

'bootstrap' => ['log'],

'components' => [

'cache' => [

'class' => 'yii\caching\FileCache',

],

'db' => $db,

'log' => [

'targets' => [

[

'class' => 'yii\log\FileTarget',

'levels' => ['error', 'warning', 'info'],

],

[

// 'class' => 'yii\log\FileTarget',

'class' => 'app\common\components\FileTarget',

'levels' => ['error'],

'logFile' => '@runtime/logs/error.log',

],//日志入庫

],

],

],

'timeZone' => 'Asia/Shanghai',

];

2、app\common\components\FileTarget

namespace app\common\components;

use yii\helpers\VarDumper;

use yii\log;

class FileTarget extends log\FileTarget

{

public function export()

{

parent::export(); // TODO: Change the autogenerated stub

//調用接口將數據入庫 默認是收集錯誤日志

if (empty(\Yii::$app->params['errorLog']['switch'])) {//設置參數是否收集錯誤日志

$flag = false;

if (empty($_SERVER['DOCUMENT_ROOT'])) {

$projectName = '';

$entrance = 'console';

$flag = true;

} else {

$document_root = explode('/', $_SERVER['DOCUMENT_ROOT']);

$projectName = $document_root[count($document_root) - 3];//項目名稱

$entrance = $document_root[count($document_root) - 2];//項目入口

}

$params = $_POST ?: $_GET;

$errList = [];

foreach ($this->messages as $message) {

list($text, $level, $category, $timestamp) = $message;

if ($level <> 4) {

if (!is_string($text)) {

// exceptions may not be serializable if in the call stack somewhere is a Closure

if ($text instanceof \Throwable || $text instanceof \Exception) {

$text = (string)$text;

} else {

$text = VarDumper::export($text);

}

}

if ($flag) {

$dir1 = '/var/www/html/';

$start = strpos($text, $dir1);

if (!$start) {

$dir1 = '/disk/html/';

$start = strpos($text, $dir1);

$project = substr($text, $start strlen($dir1), 50);

$project = explode('/', $project);

$projectName = $project[0];

} else {

$project = substr($text, $start strlen($dir1), 50);

$project = explode('/', $project);

$projectName = $project[0];

}

}

$text = $text . "\n" . "params:" . json_encode($params);

$errType = 'error';

if (stripos($category, 'db')) {

$errType = 'db';

} else if (stripos($text, 'Redis')) {

$errType = 'redis';

}

$item = [];

$item[] = empty($projectName) ? '0' : $projectName;//項目

$item[] = empty($entrance) ? '0' : $entrance;//入口

$item[] = empty($_SERVER['SERVER_NAME']) ? '0' : $_SERVER['SERVER_NAME'];

$item[] = $level;

$item[] = $category;

$item[] = $timestamp;

$item[] = $this->getMessagePrefix($message);

$item[] = IPUtils::get_local_ip();

$item[] = empty($_SERVER['REQUEST_URI']) ? '0' : $_SERVER['REQUEST_URI'];

$item[] = $errType;

$item[] = $text;//錯誤信息

$errList[] = $item;

}

}

//請求接口入庫

$this->collectErrorLog($errList);

}

}

/**

* @param $data

* @return mixed

* 錯誤日志入庫

*/

private function collectErrorLog($data)

{

if (empty(\Yii::$app->params['errorLog']['logApiDomain'])) {

if (YII_ENV == 'local' || YII_ENV == 'dev') {

$url = 'http://dev.api.log.3ttech.cn/inner/collect-error-log?';

} else {

$url = 'http://api.log.3ttech.cn/inner/collect-error-log?';

}

} else {

$url = \Yii::$app->params['errorLog']['logApiDomain'] . '/inner/collect-error-log?';

}

$requestBody = [

'data' => $data,

];

$url .= http_build_query($requestBody);

$response = json_decode(AHelper::curl_get($url), true);

return $response;

}

}

3、數據表的結構如下:

表字段可按照yii2框架中的字段調整設置。

CREATE TABLE `t_user_logs` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`project` varchar(100) NOT NULL DEFAULT '' COMMENT '項目名稱',

`entrance` varchar(20) NOT NULL DEFAULT '' COMMENT '入口',

`address` varchar(50) NOT NULL DEFAULT '' COMMENT '訪問域名',

`level` varchar(200) NOT NULL DEFAULT '' COMMENT '錯誤級別',

`category` varchar(200) NOT NULL DEFAULT '' COMMENT '類別',

`log_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '日志時間',

`prefix` varchar(200) NOT NULL DEFAULT '' COMMENT '前綴',

`suffix` varchar(200) NOT NULL DEFAULT '' COMMENT '報錯服務器ip',

`request_uri` varchar(100) NOT NULL DEFAULT '' COMMENT '請求路由',

`errType` varchar(20) NOT NULL DEFAULT '4' COMMENT '錯誤類型',

`message` text NOT NULL COMMENT '消息',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=100001 DEFAULT CHARSET=utf8;來源:https://www.icode9.com/content-2-569151.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的yii输出mysql查询日志_Yii2框架设置错误日志输出到日志或数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: porn麻豆| 人人澡超碰碰97碰碰碰 | 毛片网站免费 | 黑人玩弄人妻一区二区三区影院 | 青青草国产在线视频 | 日日夜夜免费精品视频 | 日韩免费高清视频 | 日本免费一区二区在线 | 欧美福利在线观看 | 夜夜嗨av色一区二区不卡 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 国产探花一区二区 | 国产又爽又黄无码无遮挡在线观看 | 久草手机在线观看 | 亚洲av成人无码网天堂 | 在线观看免费av片 | 久久久久久9 | 69xxxx日本| 1000部啪啪未满十八勿入 | 国产精品久久久亚洲 | 色婷婷综合久久久久中文字幕 | 韩日欧美| 免费看av网 | 91网站在线免费观看 | 久久影视精品 | 欧美50p| 在线免费观看av网址 | 人妻 丝袜美腿 中文字幕 | 色免费看 | 中文视频一区二区 | 男女黄网站 | 国产成人精品无码免费看夜聊软件 | 香蕉视频免费在线播放 | 欧美精品二区三区四区免费看视频 | 国产美女作爱视频 | 亚洲人在线观看 | 韩国三色电费2024免费吗怎么看 | 欧洲亚洲天堂 | 97视频一区二区三区 | 我们的生活第五季在线观看免费 | 超碰在线9| 在线观看色网 | 欧美一区永久视频免费观看 | 久久久精品一区二区三区 | av网站一区 | 午夜亚洲福利在线老司机 | 夜夜骑狠狠干 | 天天插插 | 精品国产综合区久久久久久 | av成人免费在线观看 | 日皮视频在线观看 | 成人福利在线免费观看 | 嫩草嫩草嫩草嫩草嫩草 | 午夜视频在线 | 内射毛片内射国产夫妻 | 国产对白刺激视频 | 久久久久久久久久久丰满 | 国产精品主播一区二区 | 成人在线影视 | 成人免费毛片色戒 | av88av| 欧美精品久久久久性色 | 污污小视频 | 久久国产视频网 | 视频福利在线观看 | 波多野结衣一区二 | 国产视频一二三四区 | 日本www高清 | 久久99久久久久久 | 69国产视频 | 噜噜噜噜噜色 | 国产草草草 | 欧美v日本 | 亚欧精品视频一区二区三区 | 欧美日韩大陆 | 香港三级网站 | 日韩国产一区二区 | a网址 | www视频在线| 国产网址在线观看 | 亚欧精品在线观看 | 久久国色 | 亚洲小视频网站 | 欧美超碰在线观看 | 欧美日韩亚洲不卡 | 国产女人精品视频 | 51精品国自产在线 | 国产jjizz一区二区三区视频 | 深爱开心激情网 | 国产成人精品999在线观看 | 欧美日本高清 | 日本护士毛茸茸 | 侵犯女教师一区二区三区 | 视频精品一区 | 亚洲国产精品毛片av不卡在线 | 久久阁| 国产乱女淫av麻豆国产 | 成人av片免费看 | 九色影院 |