当我使用ecto运行混合项目时{@ 1}}或使用iex>
时,Ecto的调试机制会显示一堆SQL,如下所示
mix run -e "My.code"
当我不再需要调试输出时,如何关闭它,我找不到任何关于如何更改ecto日志级别的东西。
提前致谢。
答案 0 :(得分:25)
如果要更改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
当然除了上述内容之外,如果要更改整体日志级别(不仅是level
日志级别),还可以随时更改Logger
配置日志Ecto
选项,例如:< / p>
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
。
答案 1 :(得分:16)
您的日志记录级别已在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
。
答案 2 :(得分:4)
将loggers: []
简单放入
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
database: "my_app_repo",
username: "DB_USERNAME",
password: "DB_PASSWORD",
hostname: "DB_HOST",
loggers: []
答案 3 :(得分:1)
要完全禁用日志记录,ecto 3的答案是:
config :app, App.Repo,
username: "postgres",
password: "postgres",
database: "app_dev",
log: false
答案 4 :(得分:1)
要暂时禁用调试消息,您可以执行Logger.configure(level: :warn)
,然后使用Logger.configure(level: :debug)
重新启用。