[英]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)
重新啟用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.