【问题标题】:How can I see the SQL executed during an Ecto test?如何查看 Ecto 测试期间执行的 SQL?
【发布时间】:2017-02-14 21:00:46
【问题描述】:

使用mix test ... 运行 Ecto 测试时,不显示执行的 SQL。据我所知,它也没有记录到任何文件中。我怎么能看到它? (我使用 Ecto 作为 Phoenix 应用程序的一部分。)

【问题讨论】:

    标签: elixir phoenix-framework ecto


    【解决方案1】:

    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 环境中有所不同,所以我认为发生了更复杂的事情......
    • @dogbert 出于某种原因,我仍然没有看到任何查询,关于我可能需要做什么的任何其他想法?或者为什么查询不会出现?我正在使用一个伞形应用程序,并尝试从顶层运行特定测试,从子应用程序内运行特定测试,从顶层运行整个套件等等。我没有想法!
    • 哦,原来我们将 ExUnit 设置为在启动时捕获日志,ExUnit.start/1 获取一个可以包括 :capture_log 的选项列表,将其设置为 false(这是默认设置,所以只需将其手动设置为true)有效。您还可以使用 @tag capture_log: false 在每个测试的基础上覆盖它
    【解决方案2】:

    如果其他人遇到即使将记录器级别设置为:debug 后仍然看不到它们的问题,可能是您已将ExUnit 配置为capture_logs(可能传递给start/1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多