Magento 2 günlük veritabanı sorguları


17

Magento 1.x n98-magerunaracı tüm DB sorguları için bir günlük dosyası almak için kullanın :

n98-magerun.phar dev:log:db [--on] [--off]

Magento2'de veritabanı sorgularını kaydetmek mümkün müdür?

Yanıtlar:


18

di.xmldosyadaki modüllerden birine şunu ekleyebilirsiniz :

<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\File"/>

Magento\Framework\DB\Adapter\Pdo\MysqlGerçek sorguları çalıştırmak için kullanılan sınıf bir logger üyesi vardır Magento\Framework\DB\LoggerInterface.
Varsayılan olarak, bu bağımlılık tercihiapp/etc/di.xml

<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\Quiet"/>

bu Magento\Framework\DB\Logger\Quiethiçbir şey yapmaz.

<?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()
    {
    }
}

tercihi olarak değiştirin ve Magento\Framework\DB\Logger\Fileoturum açılmış sorguları görmelisiniz var/debug/db.log.
Magento, bu 2 kaydediciyle (Sessiz ve Dosya) varsayılan olarak satın alınır, ancak sorguları farklı bir şekilde günlüğe kaydetmeniz gerektiğinde kendiniz oluşturabilirsiniz.


Bir yan notta, OP magerun komutu gelecekte magerun2'de desteklenecek: github.com/netz98/n98-magerun2/issues/75
Raphael, Digital

2
logAllQueries=trueDosyaya giriş yapmadan önce ayarlamam gerekiyordu - atwix.com/magento-2/database-queries-logging
Ted

1
Görünüşe göre Magento 2.2 bunu ele almak için bir dağıtım yapılandırması seçeneği sundu. LoggerInterfacetarafından yerine getirilir LoggerProxy, Logger\Quietbu da dağıtım yapılandırmasından parametreleri alır. Bkz. @ Felix'in cevabı ( magento.stackexchange.com/a/201517/60128 ).
Jānis Elmeris

23

En azından yeni sürümlerde (şimdi ve burada 2.2.1'e bakarak) şunları yapabilirsiniz:

bin/magento dev:query-log:enable

ve geniş günlükleri var var/debug/db.log. İle tekrar oturum kapatmayı unutmayın

bin/magento dev:query-log:disable

.


3

Ayarlamak için parametrelerini değiştirmek logAllQueries=trueüzere aşağıdaki kodu ekleyebilirsiniz :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>

Ayrıca diğer parametreleri değiştirebilir $debugFile, $logQueryTimeve $logCallStacko şekilde değil.


0

İşte benim 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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.