Truy vấn cơ sở dữ liệu nhật ký Magento 2


17

Trong magento 1.x tôi sử dụng n98-mageruncông cụ để lấy tệp nhật ký cho tất cả các Truy vấn DB:

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

Có thể đăng nhập truy vấn cơ sở dữ liệu trong Magento2?

Câu trả lời:


18

bạn có thể thêm vào một trong các module của bạn trong di.xmltập tin này:

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

Các Magento\Framework\DB\Adapter\Pdo\Mysqllớp học được sử dụng để chạy các truy vấn thực tế có thành viên logger Magento\Framework\DB\LoggerInterface.
Theo mặc định, tùy chọn cho phụ thuộc này được đặt trongapp/etc/di.xml

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

cái này Magento\Framework\DB\Logger\Quietkhông có gì

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

thay đổi tùy chọn thành Magento\Framework\DB\Logger\Filevà bạn sẽ thấy các truy vấn đã đăng nhập var/debug/db.log.
Magento đi kèm với 2 logger này (Yên tĩnh và Tệp) mua mặc định, nhưng bạn có thể tự tạo trong trường hợp bạn cần một cách khác để ghi lại các truy vấn.


Bên cạnh đó, lệnh OP magerun sẽ được hỗ trợ trên magerun2 trong tương lai: github.com/netz98/n98-magerun2/issues/75
Raphael tại Digital Pianism 22/03/2016

2
Tôi đã phải thiết lập logAllQueries=truetrước khi chúng được đăng nhập vào tập tin - atwix.com/magento-2/database-queries-logging
Ted

1
Có vẻ như Magento 2.2 đã giới thiệu một tùy chọn cấu hình triển khai để giải quyết vấn đề này. LoggerInterfaceđược thực hiện bởi LoggerProxy, không Logger\Quiet, lần lượt lấy tham số từ cấu hình triển khai. Xem câu trả lời của @ Felix ( magento.stackexchange.com/a/201517/60128 ).
Jāni Elmeris

23

Ít nhất là trong các phiên bản mới hơn (nhìn vào 2.2.1 tại đây và ngay bây giờ) bạn có thể làm

bin/magento dev:query-log:enable

và có nhật ký rộng rãi trong var/debug/db.log. Đừng quên tắt đăng nhập lại với

bin/magento dev:query-log:disable

.


3

Để đặt, logAllQueries=truebạn có thể thêm đoạn mã sau app/etc/di.xmlđể thay đổi __construct()các tham số của 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>

Bạn cũng có thể thay đổi các tham số khác $debugFile, $logQueryTime$logCallStacktheo cách đó.


0

Đây là di.xml của tôi

<?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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.