Dans magento 1.x, j'utilise l' n98-magerun
outil pour obtenir un fichier journal pour toutes les requêtes DB:
n98-magerun.phar dev:log:db [--on] [--off]
Est-il possible de consigner les requêtes de base de données dans Magento2?
vous pouvez ajouter dans l'un de vos modules dans le di.xml
fichier ceci:
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\File"/>
La Magento\Framework\DB\Adapter\Pdo\Mysql
classe utilisée pour exécuter les requêtes réelles a un membre enregistreur Magento\Framework\DB\LoggerInterface
.
Par défaut, la préférence pour cette dépendance est définie dansapp/etc/di.xml
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\Quiet"/>
cela Magento\Framework\DB\Logger\Quiet
ne fait rien.
<?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()
{
}
}
changez la préférence en Magento\Framework\DB\Logger\File
et vous devriez voir les requêtes connectées var/debug/db.log
.
Magento est livré avec ces 2 enregistreurs (silencieux et fichier) achetés par défaut, mais vous pouvez créer le vôtre au cas où vous auriez besoin d'une manière différente de consigner les requêtes.
logAllQueries=true
avant qu'ils ne soient enregistrés pour déposer - atwix.com/magento-2/database-queries-loggingLoggerInterface
est implémenté parLoggerProxy
, nonLogger\Quiet
, qui à son tour prend les paramètres de la configuration de déploiement. Voir la réponse de @ Felix ( magento.stackexchange.com/a/201517/60128 ).Au moins dans les versions plus récentes (en regardant un 2.2.1 ici et maintenant), vous pouvez le faire
et avoir de nombreuses connexions
var/debug/db.log
. N'oubliez pas de désactiver à nouveau la déconnexion avec.
la source
Pour définir,
logAllQueries=true
vous pouvez ajouter le code suivantapp/etc/di.xml
pour modifier les__construct()
paramètres deMagento\Framework\DB\Logger\File
:Vous pouvez également modifier les autres paramètres
$debugFile
,$logQueryTime
et$logCallStack
de cette façon.la source
Voici mon di.xml
la source