Yii2:如何记录SQL查询?

时间:2018-04-05 16:52:37

标签: sql postgresql debugging logging yii2

我想记录每个执行的SQL查询,以便我可以调试它,然后在我的数据库工具中复制,粘贴和测试它。

我尝试了这个解决方案(Yii - echo the last query)(以及其他类似解决方案),但它无效,因为我认为它适用于 Yii1 。我需要 Yii2

我认为解决方案独立于数据库(我使用PostgreSQL)。 也许我必须在common/config/main-local文件中配置它。

2 个答案:

答案 0 :(得分:4)

如果您需要Yii,请更新main.php中的组件数组,如下所示

       'components'=>array(
    #/*
                        'fixture'=>array(
                                'class'=>'system.test.CDbFixtureManager',                
                        ),
            #*/
                        'db'=>array(
                                'connectionString' => 'mysql:host=localhost;dbname=intakes_manager_test',
                                'emulatePrepare' => true,
                                'username' => 'root',
                                'password' => 'root',
                                'charset' => 'utf8',
                                'enableProfiling'=>true,
            'enableParamLogging'=>true,
                        ),
                        'log'=>array(
                                'class'=>'CLogRouter',
                                'routes'=>array(
                                        array(
                                                'class'=>'CFileLogRoute',
                                                'levels'=>'error,trace,info,warning',
                                                //'filter'=>'CLogFilter',
                    'categories'=>'system.db.*',
                    'logFile'=>'sql.log'
                                        )
                                )
                        ),
         ),

对于Yii 2中的相同内容,请执行以下操作

'components' => [
        'log' => [
            'targets' => [
                'file' => [
                    'class' => 'yii\log\FileTarget',
                ],
                'db' => [
                    'class' => 'yii\log\DbTarget',
                ],
            ],
        ],

了解有关yii 2伐木https://www.yiiframework.com/doc/guide/2.0/en/runtime-loggin

的更多信息

答案 1 :(得分:0)

postgresql.conf中

log_min_duration_statement = -1#-1被禁用,0记录所有语句

log_min_duration_statement = 0

您需要重新启动Postgresql服务