如何查看 Ecto 测试期间执行的 SQL?
How can I see the SQL executed during an Ecto test?
当 运行 使用 mix test ...
进行 Ecto 测试时,未显示执行的 SQL。据我所知,它也没有记录到任何文件中。我怎样才能看到它? (我将 Ecto 用作 Phoenix 应用程序的一部分。)
Ecto 记录 SQL 级别 :debug
的查询。默认情况下,Logger级别设置为config/test.exs
中的:warn
,这将完全忽略:debug
级别的日志。您可以将级别降低到 :debug
以查看 Ecto 执行的 SQL 查询。在 config/test.exs
中,更改:
config :logger, level: :warn
到
config :logger, level: :debug
然后 运行 mix test
.
您还可以按照 :loggers
说明更改 Ecto 记录查询的级别 here。
如果其他人 运行 遇到即使将记录器级别设置为 :debug
仍然看不到它们的问题,可能是您已将 ExUnit
配置为 capture_log
s(可能传递给 start/1
)
您还可以通过在测试中放置以下行来仅为一个测试打开调试级别。这对于快速检查很有用。
test "..." do
Logger.configure(level: :debug)
#...
end
当 运行 使用 mix test ...
进行 Ecto 测试时,未显示执行的 SQL。据我所知,它也没有记录到任何文件中。我怎样才能看到它? (我将 Ecto 用作 Phoenix 应用程序的一部分。)
Ecto 记录 SQL 级别 :debug
的查询。默认情况下,Logger级别设置为config/test.exs
中的:warn
,这将完全忽略:debug
级别的日志。您可以将级别降低到 :debug
以查看 Ecto 执行的 SQL 查询。在 config/test.exs
中,更改:
config :logger, level: :warn
到
config :logger, level: :debug
然后 运行 mix test
.
您还可以按照 :loggers
说明更改 Ecto 记录查询的级别 here。
如果其他人 运行 遇到即使将记录器级别设置为 :debug
仍然看不到它们的问题,可能是您已将 ExUnit
配置为 capture_log
s(可能传递给 start/1
)
您还可以通过在测试中放置以下行来仅为一个测试打开调试级别。这对于快速检查很有用。
test "..." do
Logger.configure(level: :debug)
#...
end