禁用 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 日志级别的东西。
提前致谢。
您的日志记录级别在您的 config/#{env}.exs
文件中配置。如果您查看 config/prod.exs
,它很可能已经将该级别设置为 :info
:
config :logger, level: :info
因此,如果您 运行 具有 MIX_ENV=prod iex -S mix
的应用程序,您将不会获得调试输出。这意味着当您使用 MIX_ENV=prod mix release
之类的内容构建版本时,生成的构建将不会产生此输出。或者,您可以通过更改适当的 config/#{env}.exs
.
为您想要的任何环境设置 level: :info
或 :warn
如果您想更改 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
更新(来自):
从 Ecto 2.0.0 开始,您需要使用 loggers: [{Ecto.LogEntry, :log, [:info]}]
.
而不是 log_level: :info
更新():
从 Ecto 3.0.0 开始,您需要使用 log: :info
.
而不是 log_level: :info
更新():
从 Ecto 3.0.0 开始,您还可以完全禁用日志记录 log: false
。
简单地将loggers: []
放入
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
database: "my_app_repo",
username: "DB_USERNAME",
password: "DB_PASSWORD",
hostname: "DB_HOST",
loggers: []
Ecto 3 对完全禁用日志记录的回答是:
config :app, App.Repo,
username: "postgres",
password: "postgres",
database: "app_dev",
log: false
要暂时禁用调试消息,您可以执行 Logger.configure(level: :warn)
,然后使用 Logger.configure(level: :debug)
重新启用。
无论 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 日志级别的东西。
提前致谢。
您的日志记录级别在您的 config/#{env}.exs
文件中配置。如果您查看 config/prod.exs
,它很可能已经将该级别设置为 :info
:
config :logger, level: :info
因此,如果您 运行 具有 MIX_ENV=prod iex -S mix
的应用程序,您将不会获得调试输出。这意味着当您使用 MIX_ENV=prod mix release
之类的内容构建版本时,生成的构建将不会产生此输出。或者,您可以通过更改适当的 config/#{env}.exs
.
level: :info
或 :warn
如果您想更改 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
更新(来自
从 Ecto 2.0.0 开始,您需要使用 loggers: [{Ecto.LogEntry, :log, [:info]}]
.
log_level: :info
更新(
从 Ecto 3.0.0 开始,您需要使用 log: :info
.
log_level: :info
更新(
从 Ecto 3.0.0 开始,您还可以完全禁用日志记录 log: false
。
简单地将loggers: []
放入
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
database: "my_app_repo",
username: "DB_USERNAME",
password: "DB_PASSWORD",
hostname: "DB_HOST",
loggers: []
Ecto 3 对完全禁用日志记录的回答是:
config :app, App.Repo,
username: "postgres",
password: "postgres",
database: "app_dev",
log: false
要暂时禁用调试消息,您可以执行 Logger.configure(level: :warn)
,然后使用 Logger.configure(level: :debug)
重新启用。