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.)
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.
ExUnit.start/1
takes a list of options which can include :capture_log
, setting that to false (well that's the default, so just removing the manual setting of it to true) worked. You can also override it on a per test basis with @tag capture_log: false
–
Huggermugger 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_log
s (likely passed to start/1
)
You can also turn on debug level just for one test by placing the following line within a test. This is useful for a quick check.
test "..." do
Logger.configure(level: :debug)
#...
end
© 2022 - 2024 — McMap. All rights reserved.
config/
but somehow didn't spot that it was different in thetest
environment, so I thought something more complicated was happening... – Hurlbut