王志軍*_*王志軍 18 debugging elixir ecto
无论在iex>或使用mix run -e "My.code"当我运行使用外生混合项目中,外生的调试机制显示像下面一堆sql语句的
16:42:12.870 [debug] SELECT a0.`id` FROM `account` AS a0 WHERE (a0.`account_name` = ?) ["71000000313"] (39.6ms)`
...
Run Code Online (Sandbox Code Playgroud)
当我不再需要调试输出时,如何关闭它,我找不到任何关于如何更改ecto日志级别的东西.
提前致谢.
Szy*_*Jeż 28
如果要更改Ecto(pre 2.0)日志级别(并且仅更改它),则可以使用log_level可在应用程序Ecto存储库配置中设置的配置选项.例如:
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
database: "my_app",
username: "my_app",
password: "secret",
hostname: "localhost",
port: 5433,
log_level: :info
Run Code Online (Sandbox Code Playgroud)
当然除了上述内容之外,如果要更改整体日志级别(不仅仅是日志级别),还可以随时更改Logger配置日志level选项,Ecto例如:
config :logger, level: :info
更新(由@Milos):
由于Ecto 2.0.0,而不是log_level: :info你需要使用loggers: [{Ecto.LogEntry, :log, [:info]}]
Paw*_*rok 17
您的日志记录级别已在config/#{env}.exs文件中配置.如果您调查config/prod.exs它,很可能已将该级别设置为:info:
config :logger, level: :info
Run Code Online (Sandbox Code Playgroud)
因此,如果您运行应用程序,MIX_ENV=prod iex -S mix您将无法获得调试输出.这意味着当您使用类似MIX_ENV=prod mix release生成的构建版本构建版本时,将不会生成此输出.或者,您可以通过更改相应的设置level: :info或设置:warn所需的任何环境config/#{env}.exs.
要暂时禁用调试消息,您可以执行以下操作Logger.configure(level: :warn),然后使用 重新启用Logger.configure(level: :debug)。
https://hexdocs.pm/logger/Logger.html#Levels
Ecto 3 完全禁用日志记录的答案是:
config :app, App.Repo,
username: "postgres",
password: "postgres",
database: "app_dev",
log: false
Run Code Online (Sandbox Code Playgroud)