web-dev-qa-db-ja.com

Elixir EctoDebug出力を無効にする

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)`
...

デバッグ出力が不要になった場合、どうすればオフにできますか、外部ログレベルのものを変更する方法について何も見つかりません。

前もって感謝します。

19
王志軍

ロギングレベルは、config/#{env}.exsファイルで構成されます。 config/prod.exsを調べると、そのレベルがすでに:infoに設定されている可能性があります。

config :logger, level: :info

したがって、MIX_ENV=prod iex -S mixを指定してアプリを実行すると、デバッグ出力は得られません。つまり、MIX_ENV=prod mix releaseのようなリリースをビルドすると、結果のビルドではこの出力が生成されません。または、適切なlevel: :infoを変更して、必要な環境に合わせて:warnまたはconfig/#{env}.exsを設定することもできます。

17
Paweł Obrok

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

もちろん、上記のほかに、全体的なログレベル(Loggerログレベルだけでなく)を変更する場合は、いつでも level 構成ログEctoオプションを変更できます。例:

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を使用する必要があります。

27
Szymon Jeż

シンプルプット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: []

4
Zubair Nabi

ロギングを完全に無効にするためのEcto3の答えは次のとおりです。

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

デバッグメッセージを一時的に無効にするには、Logger.configure(level: :warn)を実行してから、Logger.configure(level: :debug)で再度有効にします。

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

0
alvitawa