Відповіді:
Ви можете додати до одного зі своїх модулів у di.xmlфайлі це:
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\File"/>
Magento\Framework\DB\Adapter\Pdo\MysqlКлас , який використовується для виконання реальних запитів має елемент реєстратора Magento\Framework\DB\LoggerInterface.
За замовчуванням перевага для цієї залежності задається вapp/etc/di.xml
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\Quiet"/>
це Magento\Framework\DB\Logger\Quietнічого не робить.
<?php
/**
* Copyright © 2015 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\DB\Logger;
class Quiet implements \Magento\Framework\DB\LoggerInterface
{
/**
* {@inheritdoc}
*/
public function log($str)
{
}
/**
* {@inheritdoc}
*/
public function logStats($type, $sql, $bind = [], $result = null)
{
}
/**
* {@inheritdoc}
*/
public function critical(\Exception $e)
{
}
/**
* {@inheritdoc}
*/
public function startTimer()
{
}
}
змінити налаштування, Magento\Framework\DB\Logger\Fileі ви повинні побачити запити, увійшли в систему var/debug/db.log.
Magento постачається з тими двома реєстраторами (Quiet and File), які купують за замовчуванням, але ви можете створити свій власний, якщо вам потрібен інший спосіб реєстрації запитів.
logAllQueries=trueперед тим, як їх зареєструвати - atwix.com/magento-2/database-queries-logging
LoggerInterfaceреалізовано LoggerProxyне Logger\Quiet, що, в свою чергу, приймає параметри з конфігурації розгортання. Дивіться відповідь @ Фелікса ( magento.stackexchange.com/a/201517/60128 ).
Щоб встановити, logAllQueries=trueви можете додати наступний код, app/etc/di.xmlщоб змінити __construct()параметри Magento\Framework\DB\Logger\File:
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\File"/>
<type name="Magento\Framework\DB\Logger\File">
<arguments>
<argument name="logAllQueries" xsi:type="boolean">true</argument>
</arguments>
</type>
Ви також можете змінити інші параметри $debugFile, $logQueryTimeі $logCallStackтаким чином.
Ось мій di.xml
<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\File"/>
<type name="Magento\Framework\DB\Logger\File">
<arguments>
<argument name="logAllQueries" xsi:type="boolean">true</argument>
<argument name="debugFile" xsi:type="string">sql.log</argument>
</arguments>
</type>
</config>