🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
基类增加脚本日志函数,记录所有调用的SQL脚本: ~~~ /** * 记录SQL脚本 * @return [void] */ public static function logSql($level = 'sql', $folder = 'sql') { //初始化调试监听文件日志路径 // Log::init([ 'type' => 'File', 'path' => APP_PATH . 'logs' . DS . $folder . DS, //ERROR 和SQL日志单独记录 'apart_level' => ['error', 'sql'], ]); //对数据库执行的任何SQL操作进行监听 // Db::listen(function ($sql, $time, $explain) { // 记录SQL Log::record($sql . ' [' . $time . 's]', 'sql'); // 查看性能分析结果 Log::record($explain, 'sql'); }); } ~~~ 基类的数据模型初始化函数里面调用`self::logSql()`方法 ~~~ protected function initialize() { parent::initialize(); //对数据库执行的任何SQL操作进行监听 self::logSql(); } ~~~ 最终基类在application/logs/sql的日期目录下,将会不分模块的增加三种类型的日志,方便错误调试,SQL调试性能分析。 1. 主日志文件 2. error错误日志 3. sql脚本日志 ~~~ <?php namespace app\common\model; use think\Db; use think\Log; use think\Model; class SuperModel extends Model { //字段排序 protected $_order = []; //继承父类initialize() protected function initialize() { parent::initialize(); //对数据库执行的任何SQL操作进行监听 self::logSql(); } /** * 记录SQL脚本 * * @return [void] */ public static function logSql($level = 'sql', $folder = 'sql') { //初始化调试监听文件日志路径 // Log::init([ 'type' => 'File', 'path' => APP_PATH . 'logs' . DS . $folder . DS, //ERROR 和SQL日志单独记录 'apart_level' => ['error', 'sql'], ]); //对数据库执行的任何SQL操作进行监听 // Db::listen(function ($sql, $time, $explain) { // 记录SQL Log::record($sql . ' [' . $time . 's]', 'sql'); // 查看性能分析结果 Log::record($explain, 'sql'); }); } ~~~ ![](https://box.kancloud.cn/c76e2a2d7eeed443f1ecf7844810fb0f_1091x611.png) * * * * * [日志手册](https://www.kancloud.cn/manual/thinkphp5/118123)