我按照说明在cakephp v3中启用了查询记录。
http://book.cakephp.org/3.0/en/orm/database-basics.html#query-logging
// Turn query logging on.
$conn->logQueries(true);
// Turn query logging off
$conn->logQueries(false);
use Cake\Log\Log;
// Console logging
Log::config('queries', [
'className' => 'Console',
'stream' => 'php://stderr',
'scopes' => ['queriesLog']
]);
// File logging
Log::config('queries', [
'className' => 'File',
'path' => LOGS,
'file' => 'queries.log',
'scopes' => ['queriesLog']
]);
启用查询日志记录后,我无法找到日志文件。我查看了logs文件夹下的内容。我没有看到任何queries.log
。可以在哪里找到日志文件?
答案 0 :(得分:1)
我创建了一个测试项目。创建了一个简单的模型,以便我可以解析数据。
在控制器中,我添加了这些命名空间:
use App\Model\Table\User; // <---My model
use Cake\ORM\TableRegistry;
use Cake\Log\Log;
use Cake\Datasource\ConnectionManager;
这是控制器中的基本数据解析:
$conn = ConnectionManager::get('default');
Log::config('queries', [
'className' => 'File',
'path' => LOGS,
'file' => 'queries.log',
'scopes' => ['queriesLog']
]);
$users = TableRegistry::get('User');
$conn->logQueries(true);
$q = $users->find('all');
$results = $q->all();
$conn->logQueries(false);
所有这些都很有效。
答案 1 :(得分:0)
也应在数据源配置中通过指定 'log' => true
启用日志:
'Datasources' => [
'default' => [
'className' => Connection::class,
'driver' => Mysql::class,
'persistent' => false,
'host' => 'localhost',
...
'log' => true,
...
'url' => env('DATABASE_URL', null),
],