【问题标题】:Disable Elixir Ecto Debug output禁用 Elixir Ecto 调试输出
【发布时间】:2015-07-29 15:21:55
【问题描述】:

无论是iex> 还是mix run -e "My.code",当我使用ecto 运行混合项目时,Ecto 的调试机制都会显示一堆如下所示的SQL

16:42:12.870 [debug] SELECT a0.`id` FROM `account` AS a0 WHERE (a0.`account_name` = ?) ["71000000313"] (39.6ms)`
...

当我不再需要调试输出时,如何关闭它,我找不到任何关于如何更改 ecto 日志级别的内容。

提前致谢。

【问题讨论】:

    标签: debugging elixir ecto


    【解决方案1】:

    您的日志记录级别在您的config/#{env}.exs 文件中配置。如果您查看config/prod.exs,它很可能已经将该级别设置为:info

    config :logger, level: :info
    

    因此,如果您使用MIX_ENV=prod iex -S mix 运行应用程序,您将不会获得调试输出。这意味着当您使用 MIX_ENV=prod mix release 之类的内容构建版本时,生成的构建将不会产生此输出。或者,您可以通过更改适当的config/#{env}.exs,为您想要的任何环境设置level: :info:warn

    【讨论】:

      【解决方案2】:

      如果您想更改Ecto(2.0 之前)日志级别(并且仅更改它),那么您可以使用可以在您的应用程序 Ecto 存储库配置中设置的log_level 配置选项。 例如:

      config :my_app, MyApp.Repo,
        adapter: Ecto.Adapters.Postgres,
        database: "my_app",
        username: "my_app",
        password: "secret",
        hostname: "localhost",
        port: 5433,
        log_level: :info
      

      当然,除此之外,如果您想更改整体日志级别(不仅仅是Ecto 日志级别),您可以随时更改Logger 配置日志level 选项,例如:

      config :logger, level: :info

      更新(@Milos):

      从 Ecto 2.0.0 开始,您需要使用 log_level: :info 而不是 loggers: [{Ecto.LogEntry, :log, [:info]}]

      更新(@AndyMacKinlay):

      从 Ecto 3.0.0 开始,您需要使用 log: :info 而不是 log_level: :info

      更新(@Simon):

      从 Ecto 3.0.0 开始,您还可以完全禁用日志记录 log: false

      【讨论】:

      • 此设置在 Ecto 2.0.0 中已更改,您需要使用 log_level: :info 而不是 loggers: [{Ecto.LogEntry, :log, [:info]}]
      • 米洛斯,谢谢。你能为此做一个新的顶级答案吗?
      • 您也可以通过将loggers 的值设置为一个空列表来阻止Ecto 记录,如loggers: []
      • 你需要使用log: :infoin Ecto 3.0
      • 我正在使用 Ecto 3.6,显然新选项是 :log: false(此线程在 Google 搜索中仍然显示很高)。请参阅此处的文档hexdocs.pm/ecto/Ecto.Repo.html#content
      【解决方案3】:

      简单地将loggers: [] 放入

      config :my_app, MyApp.Repo, adapter: Ecto.Adapters.Postgres, database: "my_app_repo", username: "DB_USERNAME", password: "DB_PASSWORD", hostname: "DB_HOST", loggers: []

      【讨论】:

        【解决方案4】:

        完全禁用日志记录的 Ecto 3 答案是:

        config :app, App.Repo,
          username: "postgres",
          password: "postgres",
          database: "app_dev",
          log: false
        

        【讨论】:

          【解决方案5】:

          要暂时禁用调试消息,您可以执行Logger.configure(level: :warn),然后使用Logger.configure(level: :debug) 重新启用。

          https://hexdocs.pm/logger/Logger.html#Levels

          【讨论】:

          • 这是我一直在寻找能够在 iex 会话中关闭调试的功能。
          猜你喜欢
          • 2015-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多