回答:
次のdi.xml
ファイルにモジュールの1つを追加できます。
<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には、これら2つのロガー(QuietおよびFile)がデフォルトで購入されていますが、クエリのロギングに別の方法が必要な場合は、独自のロガーを作成できます。
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>