마 젠토 2 로그 데이터베이스 쿼리


17

magento 1.x에서는 n98-magerun도구를 사용하여 모든 DB 쿼리에 대한 로그 파일을 얻습니다.

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

Magento2에 데이터베이스 쿼리를 기록 할 수 있습니까?

답변:


18

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에는 기본적으로 2 개의 로거 (Quiet 및 File) 구매가 제공되지만 쿼리 로깅에 다른 방법이 필요한 경우 직접 만들 수 있습니다.


참고로, OP magerun 명령은 향후 magerun2에서 지원 될 예정입니다 : github.com/netz98/n98-magerun2/issues/75
Digital Pianism의 Raphael

2
atwix.com/magento-2/database-queries-logginglogAllQueries=true 파일에 기록되기 전에 설정 해야 했습니다
Ted

1
Magento 2.2는이를 해결하기위한 배포 구성 옵션을 도입 한 것으로 보입니다. LoggerInterface는로 구성 LoggerProxy되지 않으며 Logger\Quiet, 배치 구성에서 매개 변수를 가져옵니다. @Felix 의 답변 ( magento.stackexchange.com/a/201517/60128 )을 참조하십시오 .
Jānis Elmeris

23

적어도 최신 버전에서는 (여기서 2.2.1을 보면) 할 수 있습니다

bin/magento dev:query-log:enable

에 광범위한 로그가 var/debug/db.log있습니다. 로 로그 오프를 다시 끄는 것을 잊지 마십시오

bin/magento dev:query-log:disable

.


3

설정하려면 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그 방법이다.


0

여기 내 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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.