禁用Elixir Ecto Debug输出

时间:2015-05-18 07:55:10

标签: debugging elixir ecto

当我使用ecto运行混合项目时{@ 1}}或使用iex>时,Ecto的调试机制会显示一堆SQL,如下所示

mix run -e "My.code"

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

提前致谢。

5 个答案:

答案 0 :(得分:25)

如果要更改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

当然除了上述内容之外,如果要更改整体日志级别(不仅是level日志级别),还可以随时更改Logger配置日志Ecto选项,例如:< / p>

config :logger, level: :info

更新(@Milos):

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

更新(@AndyMacKinlay):

自Ecto 3.0.0起,您需要使用log_level: :info而不是log: :info

答案 1 :(得分:16)

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

config :logger, level: :info

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

答案 2 :(得分:4)

loggers: []简单放入

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

答案 3 :(得分:1)

要完全禁用日志记录,ecto 3的答案是:

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

答案 4 :(得分:1)

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

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