Отключить вывод отладки Elixir Ecto

Независимо от того, что используется iex> или используется mix run -e "My.code", когда я запускаю проект mix с использованием ecto, механизм отладки Ecto отображает кучу SQL-запросов, как показано ниже

16:42:12.870 [debug] SELECT a0.`id` FROM `account` AS a0 WHERE (a0.`account_name` = ?) ["71000000313"] (39.6ms)`
...

Когда мне больше не нужен вывод отладки, как я могу его выключить, я не могу найти ничего о том, как изменить материал уровня журнала экто.

Заранее спасибо.


person 王志軍    schedule 18.05.2015    source источник


Ответы (5)


Ваш уровень ведения журнала настроен в ваших 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.

person Paweł Obrok    schedule 18.05.2015

Если вы хотите изменить уровень журнала Ecto (до 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

Конечно, помимо вышеуказанного, вы всегда можете изменить параметр 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.

Обновление (@Simon):

Начиная с Ecto 3.0.0, вы также можете полностью отключить ведение журнала log: false.

person Szymon Jeż    schedule 19.05.2015
comment
Этот параметр был изменен в Ecto 2.0.0, вместо log_level: :info вам нужно использовать loggers: [{Ecto.LogEntry, :log, [:info]}]. - person Milos; 24.02.2016
comment
Милош, спасибо. Вы можете дать новый ответ на этот вопрос на высшем уровне? - person ghayes; 02.05.2016
comment
Вы также можете просто остановить Ecto от ведения журнала, установив значение loggers в пустой список, как в loggers: []. - person Anthony Eden; 03.01.2017
comment
Вам необходимо использовать log: :info в Ecto 3.0 - person Andy MacKinlay; 27.03.2019
comment
Я использую Ecto 3.6, и, по-видимому, новая опция - :log: false (эта ветка по-прежнему занимает высокие позиции в поиске Google). См. Документацию здесь hexdocs.pm/ecto/Ecto.Repo.html#content - person Simon; 10.04.2021

Ответ Ecto 3 на полное отключение ведения журнала:

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

Просто введите loggers: [] в

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

person Zubair Nabi    schedule 24.09.2018

Чтобы временно отключить отладочные сообщения, вы можете сделать Logger.configure(level: :warn), а затем снова включить с помощью Logger.configure(level: :debug).

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

person alvitawa    schedule 06.09.2019