2015-05-18 69 views
15

無論在iex>或使用mix run -e "My.code"當我使用外生運行混合項目中,外生的調試機制顯示像一堆SQLS以下禁用藥劑外生調試輸出

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

當我不需要調試輸出了,我怎麼能關掉它,我找不到如何改變ecto日誌級別的東西。

在此先感謝。

回答

10

您的日誌記錄級別配置在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以滿足您想要的任何環境。

+0

你讓我的一天! –

19

如果您想更改Ecto(pre 2.0)日誌級別(且僅限於它),那麼您可以使用log_level配置選項,該選項可在您的應用程序Ecto存儲庫配置中設置。 在例如:

config :logger, level: :info

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選項

升級(@Milos):

由於Ecto 2.0.0,而不是log_level: :info你需要使用loggers: [{Ecto.LogEntry, :log, [:info]}]

+5

此設置在Ecto 2.0.0中進行了更改,而不是'log_level :: info',您需要使用'loggers:[{Ecto.LogEntry,:log,[:info]}]''。 – Milos

+0

米洛斯,謝謝。你能爲此做出一個新的頂級答案嗎? – ghayes

+3

您還可以通過將'loggers'的值設置爲空列表來停止Ecto的記錄,如'loggers:[]'中所示。 –