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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
php mssql 分页SQL语句优化 持续影响
Apr 26 PHP
PHP 一个随机字符串生成代码
May 26 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
详解php中反射的应用
Mar 15 PHP
laravel学习教程之关联模型
Jul 30 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHP操作Redis常用技巧总结
Apr 24 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 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浮点数精度问题汇总
2015/05/13 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
浅析Node.js非对称加密方法
2018/01/29 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
python中while和for的区别总结
2019/06/28 Python
Django 反向生成url实例详解
2019/07/30 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Tensorflow 实现释放内存
2020/02/03 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
python代码如何注释
2020/06/01 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
生产班组长岗位职责
2014/01/05 职场文书
教育学习自我评价
2014/02/03 职场文书
副总经理任命书
2014/06/05 职场文书
学校实习推荐信
2015/03/27 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android