Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I see the SQL executed during an Ecto test?

When running an Ecto test with mix test ..., the SQL executed is not shown. As far as I can tell, it is not logged to any file, either. How can I see it? (I am using Ecto as part of a Phoenix application.)

like image 395
jonleighton Avatar asked Feb 14 '17 21:02

jonleighton


2 Answers

Ecto logs the SQL queries with the level :debug. By default, the Logger level is set to :warn in config/test.exs, which will completely ignore :debug level logs. You can lower the level to :debug to see the SQL queries executed by Ecto. In config/test.exs, change:

config :logger, level: :warn

to

config :logger, level: :debug

and then run mix test.

You can also change the level with which Ecto logs the queries by following the :loggers instructions here.

like image 144
Dogbert Avatar answered Oct 14 '22 08:10

Dogbert


In case anyone else ran into the issue of still not seeing them even after setting the logger level to :debug, it may be that you have configured ExUnit to capture_logs (likely passed to start/1)

like image 33
mackshkatz Avatar answered Oct 14 '22 06:10

mackshkatz