yii中将log存入数据库是修改原有风格
2015-08-20 14:58
627 查看
YII是提供修改输出参数格式的,但是可供用户定制化的空间非常小。
如想把prefix中的userID和ip分别插入到数据库中不同的两列,就需要需改框架文件:
/basic/vendor/yiisoft/yii2/log/Target与/basic/vendor/yiisoft/yii2/log/DbTarget如下:
如想把prefix中的userID和ip分别插入到数据库中不同的两列,就需要需改框架文件:
/basic/vendor/yiisoft/yii2/log/Target与/basic/vendor/yiisoft/yii2/log/DbTarget如下:
public function getMessagePrefixCustomized($message) { if ($this->prefix !== null) { return call_user_func($this->prefix, $message); } if (Yii::$app === null) { return ''; } $request = Yii::$app->getRequest(); $ip = $request instanceof Request ? $request->getUserIP() : '-'; /* @var $user \yii\web\User */ $user = Yii::$app->has('user', true) ? Yii::$app->get('user') : null; if ($user && ($identity = $user->getIdentity(false))) { $userID = $identity->getId(); } else { $userID = '-'; } /* @var $session \yii\web\Session */ $session = Yii::$app->has('session', true) ? Yii::$app->get('session') : null; $sessionID = $session && $session->getIsActive() ? $session->getId() : '-'; $results = array('ip' => $ip, 'userID' => $userID, 'sessionID' => $sessionID); //return "[$ip][$userID][$sessionID]"; return $results;//原来是返回一个string这里返回一个数组 }
public function export() { $tableName = $this->db->quoteTableName($this->logTable); $sql = "INSERT INTO $tableName ([[level]], [[category]], [[log_time]], [[message]], [[IP]], [[customerID]]) VALUES (:level, :category, :log_time, :message, :IP, :customerID)";//在这里修改在数据库中要显示的字段 $command = $this->db->createCommand($sql); foreach ($this->messages as $message) { list($text, $level, $category, $timestamp) = $message; if (!is_string($text)) { $text = VarDumper::export($text); } $command->bindValues([ ':level' => $level, ':category' => $category, ':log_time' => date('Y-m-d H:i:s'),//如需修改时间戳格式在这里修改 ':customerID' => $this->getMessagePrefixCustomized($message)['userID'],//从上边的函数里边的返回值 ':IP' => $this->getMessagePrefixCustomized($message)['ip'], ':message' => $text, ])->execute(); } }
相关文章推荐
- Solaris 11学习小结1:开启SSH/TELNET/FTP服务
- PHP对表单提交特殊字符的过滤和处理方法汇总
- php学习过程二
- php-socket发送邮箱
- PHP之APC缓存详细介绍(学习整理)
- FTPClient上传文件乱码
- yii授权
- PHP:遍历关联数组的方法介绍
- csv读入数据,用julia/matplotlib/pyplot 画矢量图导入word中
- php.1 表单处理
- yii restfull 方法验证用户身份通过token
- Thinkphp 自定义404页面
- PHP第七课 使用方法数组2
- PHP检查端口是否可以被绑定
- Yii 多表关联relations
- PHP中的traits之二(trait继承中的优先级)
- 虚拟化--001 VCAC esxi 中ntp服务器配置
- Yii中的relations方法
- PHP isset()与empty()的使用区别详解
- PHP session 存储方式