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

本文实例讲述了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框架程序设计有所帮助。

(0)

相关推荐

  • PHP如何抛出异常处理错误

    首先要知道什么是PHP异常? 异常(Exception)用于在指定的错误发生时改变脚本的正常流程. PHP 5 提供了一种新的面向对象的错误处理方法. 异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这种情况称为异常. 当异常被触发时,通常会发生: 当前代码状态被保存 代码执行被切换到预定义的异常处理器函数 根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本 我们将展示不同的错误处理方法: 异常的基本使用 创建自定义的异常处理器

  • ThinkPHP调试模式与日志记录概述

    本文所述为ThinkPHP调试模式与日志记录的使用方法,该功能在进行ThinkPHP项目开发的过程中起到非常重要的作用,有必要加以理解并掌握.具体方法如下: 1.可以在config.php中进行设置,默认为关闭状态. 开启方法如下: 'APP_DEBUG' => true 打开\ThinkPHP\Common\debug.php文件可以查看debug的默认设置如下: return array( 'LOG_RECORD'=>true, // 进行日志记录 'LOG_RECORD_LEVEL' =

  • PHP中的错误处理、异常处理机制分析

    例: 复制代码 代码如下: <?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错 ?> 那么正确的写法应该如下: 复制代码 代码如下: <?php if(file_exists('test.txt')){ $f=fopen('test.txt','r'); //使用完后关闭 fclose($f); } ?> 一.PHP错误处理的三种方式A.简单的die()语句: 等价于exit(); 例: 复制代码 代码如

  • PHP调试函数和日志记录函数分享

    网站程序开发过程经常需要调试,发布阶段也需要记录运行日志,方便发现问题和还原事件.这就要求有调试和日志记录功能. 下面分别写了用于调试的函数和用于记录错误的函数. 使用方法很简单,且自动根据日期生成日志文件: 复制代码 代码如下: //调试时,多个参数都可以: sysdebug("hello"); sysdebug("hello", "tiger is coming now"); //错误记录也一样: syserror("error&q

  • PHP中错误与异常的日志记录用法分析

    本文分析了PHP中错误与异常的日志记录用法.分享给大家供大家参考,具体如下: 提到 Nginx + PHP 服务的错误日志,我们通常能想到的有 Nginx 的 access 日志.error 日志以及 PHP 的 error 日志.虽然看起来是个很简单的问题,但里面其实又牵扯到应用配置以及日志记录位置的问题,如果是在 ubuntu 等系统下使用 apt-get 的方式来安装,其自有一套较为合理的的配置文件可用.再者运行的应用程序中的配置也会影响到日志记录的方式及内容. 错误与异常的区别 关于错误

  • PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法

    异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这种情况称为异常. PHP 5 添加了类似于其它语言的异常处理模块.在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获.需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常.每一个 try 至少要有一个与之对应的 catch.使用多个 catch 可以捕获不同的类所产生的异常.当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一

  • PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法

    其实,这是一个非常容易解决掉的问题.在我看来,似曾相识,呵呵,最近学JavaScript可是学会了使用var声明变量. 其实,在PHP中根本不需要使用var声明的,但是当一个变量作为一个类的成员变量的时候,使用var还是没有问题的. 在外部使用var就报错Parse error: syntax error, unexpected T_VAR in...,例如我的出错信息: Parse error: syntax error, unexpected T_VAR in D:\Apache2.2\ht

  • php错误、异常处理机制(补充)

    一.错误处理 异常处理: 意外,是在程序运行过程中发生的意料这外的事,使用异常改变脚本正常流程 PHP5中的一个新的重要特性 复制代码 代码如下: if(){ }else{ } try { }catch(异常对象){ } 1. 如果try中代码没有问题,则将try中代码执行完后就到catch后执行 2. 如果try中代码有异常发生,则抛出一个异常对象(使用throw),抛出给了catch中的参数, 则在try中代码就不会再继续执行下去 直接跳转到catch中去执行, catch中执行完成, 再继

  • PHP各种异常和错误的拦截方法及发生致命错误时进行报警

    在日常开发中,大多数人的做法是在开发环境时开启调试模式,在产品环境关闭调试模式.在开发的时候可以查看各种错误.异常,但是在线上就把错误显示的关闭. 上面的情形看似很科学,有人解释为这样很安全,别人看不到错误,以免泄露重要信息... 但是你有没有遇到这种情况,线下好好的,一上线却运行不起来也找不到原因... 一个脚本,跑了好长一段时间,一直没有问题,有一天突然中断了,然后了也没有任何记录都不造啥原因... 线上一个付款,别人明明付了款,但是我们却没有记录到,自己亲自去实验,却是好的... 种种以上

  • 实例讲解如何在PHP的Yii框架中进行错误和异常处理

    Yii已经默认已经在CApplication上实现了异常和错误的接管,这是通过php的set_exception_handler,set_error_handler实现的.通过这两个PHP内置函数,可以对程序中未捕获的异常以及错误进行接管处理,从而提高程序的可维护性.这在大型系统是至关重要的,当发生错误时,我们希望能将相关详细信息记录,甚至是即时发送报警,从而缩短故障修复时间,提高整个系统的稳定性. 默认情况下,Yii会将异常处理分配给CApplication::handleException,

  • 一个显示效果非常不错的PHP错误、异常处理类

    一.效果图: 二.实现代码 复制代码 代码如下: <?php // 自定义异常函数set_exception_handler('handle_exception'); // 自定义错误函数set_error_handler('handle_error'); /** * 异常处理 * * @param mixed $exception 异常对象 * @author blog.snsgou.com */function handle_exception($exception) { Error::ex

随机推荐