Want to get all Sql queries during the page load.
can any one help me on How to log all Magento 2 SQL queries ?
In your app/etc/di.xml, replace the line:
<preference for="Magento\Framework\DB\LoggerInterface" type="Magento\Framework\DB\Logger\Quiet"/>
with
<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">log/sql.log</argument>
</arguments>
</type>
Flush Magento cache (in backend, or by executing bin/magento cache:flush
) after this.
Log file is located here: var/log/sql.log
bin/magento dev:query-log:enable
. (copied my answer from Magento 2 log database queries)
var/debug/db.log
(not a file in var/log
)
Commented
Nov 7, 2019 at 16:31
php bin/magento dev:query-log:enable --include-call-stack=false
if you don't want to include the whole callstack
Alternative (to the answer of Siju Joseph),
if you don't want to change your magento config, you can also configure mysql itself: activate slow.log and set it to 0 seconds.
Therefore edit /etc/mysql/my.cnf
and set slow_query_log
to 'on' and long_query_time
to '0'.
This will result in all mysql queries getting logged.