In Magento 1.x benutze ich das n98-magerun
Tool, um eine Protokolldatei für alle DB-Abfragen zu erhalten:
n98-magerun.phar dev:log:db [--on] [--off]
Ist es möglich, Datenbankabfragen in Magento2 zu protokollieren?
Sie können in einem Ihrer Module in der di.xml
Datei Folgendes hinzufügen :
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\File"/>
Die Magento\Framework\DB\Adapter\Pdo\Mysql
Klasse, mit der die eigentlichen Abfragen ausgeführt werden, verfügt über ein Protokollierungsmitglied Magento\Framework\DB\LoggerInterface
.
Standardmäßig ist die Einstellung für diese Abhängigkeit in festgelegtapp/etc/di.xml
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\Quiet"/>
das Magento\Framework\DB\Logger\Quiet
macht nichts.
<?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()
{
}
}
Ändern Sie die Einstellung in Magento\Framework\DB\Logger\File
und Sie sollten die angemeldeten Abfragen sehen var/debug/db.log
.
Magento wird standardmäßig mit diesen 2 Loggern (Quiet und File) ausgeliefert. Sie können jedoch Ihre eigenen Logger erstellen, falls Sie eine andere Art der Protokollierung von Abfragen benötigen.
logAllQueries=true
bevor sie in der Datei - atwix.com/magento-2/database-queries-loggingLoggerInterface
wird implementiert vonLoggerProxy
, nichtLogger\Quiet
, was wiederum Parameter aus der Bereitstellungskonfiguration übernimmt. Siehe die Antwort von @ Felix ( magento.stackexchange.com/a/201517/60128 ).Zumindest in neueren Versionen (siehe 2.2.1 hier und jetzt) ist dies möglich
und haben umfangreiche Logins
var/debug/db.log
. Vergessen Sie nicht, die Abmeldung wieder mit abzuschalten.
quelle
Zum Einstellen
logAllQueries=true
können Sie den folgenden Code hinzufügen,app/etc/di.xml
um die__construct()
Parameter zu ändernMagento\Framework\DB\Logger\File
:Sie können auch die anderen Parameter ändern
$debugFile
,$logQueryTime
und$logCallStack
auf diese Weise.quelle
Hier ist meine di.xml
quelle