簡體   English   中英

禁用 Elixir Ecto 調試輸出

[英]Disable Elixir Ecto Debug output

無論是在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 日志級別內容的任何信息。

提前致謝。

如果您想更改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 開始,您需要使用loggers: [{Ecto.LogEntry, :log, [:info]}]而不是log_level: :info

更新(由@AndyMacKinlay 提供):

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

更新(由@Simon 提供):

從 Ecto 3.0.0 開始,您還可以完全禁用日志記錄log: false

您的日志記錄級別在config/#{env}.exs文件中配置。 如果你查看config/prod.exs它很可能已經將該級別設置為:info

config :logger, level: :info

因此,如果您使用MIX_ENV=prod iex -S mix運行應用程序,您將不會獲得調試輸出。 這意味着當您使用MIX_ENV=prod mix release之類的內容構建MIX_ENV=prod mix release ,生成的構建將不會產生此輸出。 或者,您可以通過更改適當的config/#{env}.exs為您想要的任何環境設置level: :info:warn

完全禁用日志記錄的 Ecto 3 答案是:

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

簡單的 put loggers: [] in

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

要暫時禁用調試消息,您可以執行Logger.configure(level: :warn) ,然后使用Logger.configure(level: :debug)重新啟用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM