【发布时间】:2017-02-14 21:00:46
【问题描述】:
使用mix test ... 运行 Ecto 测试时,不显示执行的 SQL。据我所知,它也没有记录到任何文件中。我怎么能看到它? (我使用 Ecto 作为 Phoenix 应用程序的一部分。)
【问题讨论】:
标签: elixir phoenix-framework ecto
使用mix test ... 运行 Ecto 测试时,不显示执行的 SQL。据我所知,它也没有记录到任何文件中。我怎么能看到它? (我使用 Ecto 作为 Phoenix 应用程序的一部分。)
【问题讨论】:
标签: elixir phoenix-framework ecto
Ecto 记录级别为 :debug 的 SQL 查询。默认情况下,config/test.exs中的Logger级别设置为:warn,这将完全忽略:debug级别的日志。您可以将级别降低到:debug 以查看 Ecto 执行的 SQL 查询。在config/test.exs,更改:
config :logger, level: :warn
到
config :logger, level: :debug
然后运行mix test。
您还可以按照:loggers 指令here 更改 Ecto 记录查询的级别。
【讨论】:
config/ 中找到了记录器设置,但不知何故没有发现它在test 环境中有所不同,所以我认为发生了更复杂的事情......
ExUnit.start/1 获取一个可以包括 :capture_log 的选项列表,将其设置为 false(这是默认设置,所以只需将其手动设置为true)有效。您还可以使用 @tag capture_log: false 在每个测试的基础上覆盖它
如果其他人遇到即使将记录器级别设置为:debug 后仍然看不到它们的问题,可能是您已将ExUnit 配置为capture_logs(可能传递给start/1)
【讨论】: