我们在熟悉新的项目了解业务的时候,可以有很多方式。看项目文档说明;和了解项目身边的人沟通;通过自己度代码调试,但是一步步调试打印语句或许有点慢,如果可以调出当前请求的所有语句,那么很快可以熟悉他的业务。再或者自己开发中排查问题。

公司所用的框架是yii,由于项目比较早了,好像是13年开始的,所以我的测试版本是yii1,我所尝试的调试也是直接搜了很多帖子,在项目中实践可用,应该是兼容1和2版本的。

[第一种]

①修改 index.php 开启调试模式

//index.php
//开启调试模式
defined('YII_DEBUG') or define('YII_DEBUG',true);
//设置日志记录级别,YII_TRACE_LEVEL的数字越大,信息越清楚
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',);

②修改配置文件 main.php

默认的日志是输出到protected/runtime/application.log
如果需要修改那么需要在main.php里面的components下面增加log配置,如下:

'preload' => array('log'),//这句也必须加上

在 Yii 中,有下列几种日志路由可用:

CDbLogRoute: 将信息保存到数据库的表中。
CEmailLogRoute: 发送信息到指定的 Email 地址。
CFileLogRoute: 保存信息到应用程序 runtime 目录中的一个文件中。
CWebLogRoute: 将 信息 显示在当前页面的底部。
CProfileLogRoute: 在页面的底部显示概述(profiling)信息。

注:信息路由发生在当前请求周期最后的 onEndRequest 事件触发时。 要显式终止当前请求过程,请调用 CApplication::end() 而不是使用 die() 或 exit(),因为 CApplication::end() 将会触发 onEndRequest 事件, 这样信息才会被顺利地记录。

'log'=>array(
'class'=>'CLogRouter',
'routes'=>array (
//log error
array (
'class'=>'FileDailyLogRoute',
'levels'=>'error, warning',
'logFile'=>'api_php_error.log',
'keepDays'=>,
'logPath'=>'/data/logs/api',
),
//下面两个数组是我自己的配置,上面是公司项目自带的,不必例会           //请求后在浏览器展示
// array (
// 'class' => 'CWebLogRoute',
// 'showInFireBug' => true,
// 'ignoreAjaxInFireBug' => true,
// 'levels' => 'trace', //级别为trace
// 'categories' => 'system.db.*' // //只显示关于数据库信息,包括数据库连接,数据库执行语句
// ),
array (
'class' => 'CProfileLogRoute',
'levels' => 'trace',
'showInFireBug' => true,
'ignoreAjaxInFireBug' => true,
'categories' => 'system.db.* '
)
)
),

配置好之后,刷新请求页面就可以了,我这里调试的是api接口,所以看着比较不舒服,没试过web页面打印效果会不会美观些。

我所在公司的二级配置地址是  protected/config/config.api.edaijia.cc            api

'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
),
array(
'class'=>'CWebLogRoute', //在页面下方输出 主要使用此日志类
'categories'=>'system.db.*',//日志分类 ), ),
),

[第二种]

在yii框架的libs目录下,找到/libs/framework/db/CDbCommand.php文件

然后找到两个方法,queryInternal和execute方法​​,编辑方法,echo 出sql语句。

这里编辑queryInternal方法524行。

 echo '<pre>';
echo $this->getText().$par;
print_r($this->_paramLog);

Yii1打印当前请求所有执行的SQL及耗时的更多相关文章

  1. [系列] Go - 基于 GORM 获取当前请求所执行的 SQL 信息

    前言 为了便于精准排查问题,需要将当前的请求信息与当前执行的 SQL 信息设置对应关系记录下来,记录的 SQL 信息包括: 执行 SQL 的当前时间: 执行 SQL 的文件地址和行号: 执行 SQL ...

  2. thinkphp打印执行的sql

    打印下执行的sql,也就是在执行add或save语句下面写下: echo M()->getlastsql();

  3. Mybatis中在log日志或控制台打印执行的sql

    最近在调试代码时,需要查看当前操作执行的sql,在日志里没查到,经过修改logback配置后成功,现记录如下:一.Mybatis版本是3.0.6(我正在用的版本)该版本只需要修改logback.xml ...

  4. Mybatis-第N篇配置log4j1、log4j2打印执行的sql语句

    1.log4j1配置 目录结构: conf.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT ...

  5. kettle job如何利用java的反射机制获取执行的sql语句

    kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...

  6. 查询Oracle正在执行的sql语句

    --查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, ...

  7. MySQL Transaction--查看未提交事务执行的SQL

    未提交事务 长期未提交事务,指开启事务后,长时间未向MySQL发出SQL执行请求或事务处理(COMMIT/ROLLBACK)请求,在系统表`information_schema`.`INNODB_TR ...

  8. orm分组,聚合查询,执行原生sql语句

    from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...

  9. 在django中,执行原始sql语句

    extra()方法 结果集修改器,一种提供额外查询参数的机制 使用extra: 1:Book.objects.filter(publisher__name='广东人员出版社').extra(where ...

随机推荐

  1. jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题

    今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...

  2. [Codis] Codis3部署流程

    #0 前言 最近因为项目需要,研究了一下传说中的Codis.下面跟大家分享Codis3的搭建流程 https://github.com/CodisLabs/codis #1 Codis是什么 官方的介 ...

  3. Node bak

    process.on('uncaughtException', function (err) { logger.info('Local Server Exception: ') logger.info ...

  4. Python——rrdtool模块的安装

    一.Centos环境yum命令安装 yum install rrdtool rrdtool-devel 二.源码安装 wget https://pypi.python.org/packages/99/ ...

  5. Centos6.8 安装dlib库时出错【升级gcc 到4.9.0以上】

    在centos6.8上安装dlib库时出现错误: 1.CMake must be installed to build the following extensions: dlib 没有安装CMake ...

  6. zabbix的安装部署及自定义监控的实现

    此篇感谢我的小师傅. 1. Zabbix主要功能和优劣势说明 1. Zabbix主要功能和优劣势说明 1.1 Zabbix主要功能: 1)Application monitoring 应用监控 数据库 ...

  7. Gym 101972

    F读错题wa了三个小时.自闭了,不然I题有可能能出的..已经想到组合数也敲完组合数板子了. A:这...**题吧,第一眼看的这个就秒了 #include<bits/stdc++.h> #d ...

  8. codeforces R 493 div2

    我蓝了!蓝了!!!蒟蒻的蓝色.日常点开friend发现竟然没几个人打??然后去div1看了一下果然学长全都去打div1了呜呜呜. 看到了久违的黄大仙,以为他今晚要上grandmaster,结果打完发现 ...

  9. Luogu 1031 - 均分纸牌 - [有意思的思维题]

    题目链接:https://www.luogu.org/problemnew/show/P1031 题目描述有 $N$ 堆纸牌,编号分别为 $1,2,…,N$.每堆上有若干张,但纸牌总数必为 $N$ 的 ...

  10. 图->最短路径->单源最短路径(迪杰斯特拉算法Dijkstra)

    文字描述 引言:如下图一个交通系统,从A城到B城,有些旅客可能关心途中中转次数最少的路线,有些旅客更关心的是节省交通费用,而对于司机,里程和速度则是更感兴趣的信息.上面这些问题,都可以转化为求图中,两 ...