Answers:
您可以在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附带了这两种记录器(安静和文件记录器)的默认购买价,但是您可以创建自己的记录器,以防需要其他记录查询的方式。
logAllQueries=true
它们记录到文件之前进行设置– atwix.com/magento-2/database-queries-logging
LoggerInterface
是由LoggerProxy
而不是实施的,Logger\Quiet
反过来又从部署配置中获取参数。请参阅@Felix的答案(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>