THINKPHP项目开发中的日志记录实例分析


Posted in PHP onDecember 01, 2014

本文实例讲述了THINKPHP项目开发中的日志记录用法。分享给大家供大家参考。具体方法如下:

1、建立日志表

CREATE TABLE `logs` (  

  `id` int(11) NOT NULL auto_increment,  

  `guid` varchar(100) character set utf8 NOT NULL,  

  `addtime` timestamp NOT NULL default CURRENT_TIMESTAMP,  

  `account` varchar(100) character set utf8 NOT NULL,  

  `nickname` varchar(100) character set utf8 NOT NULL,  

  `app` varchar(100) character set utf8 NOT NULL,  

  `action` varchar(100) character set utf8 NOT NULL,  

  `method` varchar(100) character set utf8 NOT NULL,  

  `query_string` text character set utf8 NOT NULL,  

  `is_desc` varchar(100) character set utf8 NOT NULL,  

  `desc` varchar(100) character set utf8 NOT NULL,  

  `ipaddr` varchar(100) character set utf8 NOT NULL,  

  `unique_flag` varchar(100) character set utf8 NOT NULL,  

  PRIMARY KEY  (`id`)  

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 ;

2、Common/common.php里面进行方法的定义:
function getGlobalSkypeLogDbConfig() {  

 $global_skype_db_config = array(  

     'dbms'          => C('DB_TYPE'),  

     'username' => C('DB_USER'),  

     'password' => C('DB_PWD'),  

     'hostname' => C('DB_HOST'),  

     'database'   => C('DB_NAME'),  

 );  

 return $global_skype_db_config;  

}  

  

function addOperationLog($desc=NULL, $unique_flag='system', $app=APP_NAME, $action=MODULE_NAME, $method=ACTION_NAME) {  

 $global_skype_db_config = getGlobalSkypeLogDbConfig();  

 static $global_skype_log_db_conn;  

 if (!$global_skype_log_db_conn) {  

  $global_skype_log_db_conn = mysql_connect($global_skype_db_config['hostname'], $global_skype_db_config['username'], $global_skype_db_config['password']);  

 }  

 if (!$global_skype_log_db_conn) {  

  die('Mysql_Error:' . __FILE__ . '|' . __LINE__ . '|' . mysql_error());  

 }  

 mysql_query('use ' . $global_skype_db_config['database'], $global_skype_log_db_conn);  

 mysql_query('set names utf8 ', $global_skype_log_db_conn);  

  

 $account = getAdminAccount();  

 $nickname = getAdminNickname();  

 $user_id = getAdminUserId();  

 $ipaddr = get_client_ip();  

 $query_string = print_r(array_merge($_GET, $_POST), true);  

  

 $desc = $desc;  

 $is_desc = 0;  

 $unique_flag = $unique_flag;  

 if ($desc) {  

  $is_desc = 1;  

 }  

  

 $insert_time = date('Y-m-d H:i:s');  

  

 $query = "INSERT INTO `" . C('LOG_DB_TABLE') . "` (`guid`,`account`,`nickname`,`addtime`,`app`,`action`,  

    `method`,`query_string`,`is_desc`,`desc`,`ipaddr`,`unique_flag`) VALUES ('$user_id','$account','$nickname','$insert_time','$app',  

    '$action','$method','$query_string','$is_desc','$desc','$ipaddr','$unique_flag');";  

  

 return mysql_query($query, $global_skype_log_db_conn);  

}  

  

function getAdminAccount() {  

 return $_SESSION['loginAccount'];  

}  

  

function getAdminNickname() {  

 return $_SESSION['loginUserName'];  

}  

  

function getAdminUserId() {  

 return $_SESSION[C('USER_AUTH_KEY')];  

}

在其他操作类里调用addOperationLog();即可

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
php 执行系统命令的方法
Jul 07 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
调试WordPress中定时任务的相关PHP脚本示例
Dec 10 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
php实现的错误处理封装类实例
Jun 20 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 PHP
PHP内置的Math函数效率测试
Dec 01 #PHP
php查找字符串出现次数的方法
Dec 01 #PHP
ThinkPHP实现动态包含文件的方法
Nov 29 #PHP
PHP静态文件生成类实例
Nov 29 #PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 #PHP
PHP实现的简单日历类
Nov 29 #PHP
PHP实现货币换算的方法
Nov 29 #PHP
You might like
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
基于PHP文件操作的详解
2013/06/05 PHP
PHP实现把数字ID转字母ID
2013/08/12 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
php并发加锁示例
2016/10/17 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
jQuery聚合函数实例
2015/05/21 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
Angular实现响应式表单
2017/08/04 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
Python的Flask框架的简介和安装方法
2015/11/13 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
python 如何快速复制序列
2020/09/07 Python
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
护理学应聘自荐书范文
2014/02/05 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
授权委托书范本
2014/04/03 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
react中props 的使用及进行限制的方法
2021/04/28 Javascript