Elixir 已忽略Ecto Repo记录器配置
我尝试将ecto日志级别设置为:info,并根据以下内容在我的回购配置中添加了这些行: 然而,我在日志中看到的是:Elixir 已忽略Ecto Repo记录器配置,elixir,ecto,Elixir,Ecto,我尝试将ecto日志级别设置为:info,并根据以下内容在我的回购配置中添加了这些行: 然而,我在日志中看到的是: [debug] QUERY OK db=5.1ms INSERT INTO ... 很明显,它没有任何效果 我还尝试添加自定义模块: EXTO_inspector.ex: defmodule App.EctoInspector do def log(log) do IO.inspect(log) log end end config.exs: logge
[debug] QUERY OK db=5.1ms
INSERT INTO ...
很明显,它没有任何效果
我还尝试添加自定义模块:
EXTO_inspector.ex:
defmodule App.EctoInspector do
def log(log) do
IO.inspect(log)
log
end
end
config.exs:
loggers: [
{App.EctoInspector, :log, []}
]
日志记录的配置方式是否有所改变,但在文档中没有更新
我使用的是Ecto v2.2.8,如中所述:
此选项在编译时处理,也可以作为使用exto.Repo的选项提供
重点是我的。更改config.exs文件不会触发Ecto重新构建。通过将此选项传递给使用App.Repo,可以实现所需的行为:
或者通过使用mix do:clean、deps.compile或mix deps.compile强制异位重建-强制异位仅重新编译异位,归功于Sascha Wolf。是的,这很有效。我甚至没有想到重新编译依赖项。您可能想了解更多关于编译阶段与运行时的信息。所有宏都被扩展,例如在编译时被翻译成AST,而Ecto config肯定会使用宏来读取日志配置,以完全消除不必要的AST。运行时没有单独的if,调试代码不再出现在您的beam中。您也可以仅通过使用mix deps.compile-force-exto重新编译ecto
loggers: [
{App.EctoInspector, :log, []}
]
use App.Repo, loggers: [{Ecto.LogEntry, :log, [:info]}]