爱亚搏 > ThinkPHP开发中的日志记录

ThinkPHP开发中的日志记录

分类: ThinkPHP+DWZ  |  作者: jimlong 相关  |  发布日期 : 2014-10-12  |  热度 : 354°

这是我实习以来的第一个项目(服务器管理系统),我做了项目的一部分功能,感觉每次实践都会有所收获,下面我要把自己在开发过程中的日志记录写下来~~

首先,你要建一个日志表,我的这个表里面的字段有:`user_id`,`account`,`nickname`,`insert_time`,`app`,`action`, `method`,`query_string`,`is_desc`,`desc`,`ipaddr`,`unique_flag`

 

 // 是否开启调试模式 (开启AllInOne模式时该配置无效, 将自动置为false)
    ‘APP_DEBUG’       => 0,
    ‘LOG_DB_HOSTNAME’ => $conf['dbhost'], //操作日志所用的数据库
    ‘LOG_DB_USERNAME’ => $conf['dbuser'],
    ‘LOG_DB_PASSWORD’ => $conf['dbpass'],
    ‘LOG_DB_DATABASE’ => $conf['dbname'],
    ‘LOG_DB_TABLE’    => ‘tp_logs’,
    ‘LOG_DB_TYPE’     => ‘mysql’,

  还要在Common/common.php里面进行方法的定义:

/**
 * 获取日志数据库
 * @return type
 */
function getGlobalSkypeLogDbConfig() {
 $global_skype_db_config = array(
     ‘dbms’          => C(‘LOG_DB_TYPE’),
     ‘username’ => C(‘LOG_DB_USERNAME’),
     ‘password’ => C(‘LOG_DB_PASSWORD’),
     ‘hostname’ => C(‘LOG_DB_HOSTNAME’),
     ‘database’   => C(‘LOG_DB_DATABASE’),
 );
 return $global_skype_db_config;
}

/**
 * 添加操作日志
 * @global array $global_skype_db_config
 * @staticvar type $global_skype_log_db_conn
 * @param type $desc
 * @param type $unique_flag
 * @param type $app
 * @param type $action
 * @param type $method
 * @return type
 */
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 = intval(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’) . "` (`user_id`,`account`,`nickname`,`insert_time`,`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::get(‘loginAccount’);
}

/**
 * 获取当前管理员的昵称
 * @return type
 */
function getAdminNickname() {
 return Session::get(‘loginUserName’);
}

/**
 * 获取当前登录的用户数字ID
 */
function getAdminUserId() {
 return Session::get(C(‘USER_AUTH_KEY’));
}

 当你都做完了以上操作,要实现日志记录数据库的时候只要这样         addOperationLog($info);            就可以了哦~~