2015-05-18 15 views
15

Qualunque sia in iex> o utilizzando mix run -e "My.code" quando si esegue il progetto mix utilizzando Ecto, visualizzare debug meccanismo della Ecto un mazzo di SQLs come qui di seguitoDisabilita Elixir Ecto Debug uscita

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

Quando ho bisogno più l'output di debug, Come posso disattivarlo, non riesco a trovare nulla su come modificare le cose di livello ecto log.

Grazie in anticipo.

risposta

10

Il livello di registrazione è configurato nei file config/#{env}.exs. Se si guarda in config/prod.exs molto probabilmente già ha quel livello impostato :info:

config :logger, level: :info 

Quindi, se si esegue l'applicazione con MIX_ENV=prod iex -S mix non sarà possibile ottenere l'output di debug. Ciò significa che quando si crea una versione con qualcosa come MIX_ENV=prod mix release, la generazione risultante non produrrà questo output. In alternativa è possibile impostare level: :info o :warn per l'ambiente desiderato modificando l'appropriato config/#{env}.exs.

+0

Hai reso la mia giornata !! –

19

Se si desidera modificare il livello di registro Ecto (pre 2.0) (e solo esso), è possibile utilizzare l'opzione di configurazione log_level che può essere impostata nella configurazione del repository Ecto delle applicazioni. Nell'esempio:

config :my_app, MyApp.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    database: "my_app", 
    username: "my_app", 
    password: "secret", 
    hostname: "localhost", 
    port: 5433, 
    log_level: :info 

Naturalmente accanto a quanto sopra si può sempre cambiare l'opzione di configurazione Logger registro level se si desidera modificare il livello complessivo di registro (non solo il livello Ecto di log), ad esempio:

config :logger, level: :info

Update (per @Milos):

Da Ecto 2.0.0, invece di log_level: :info devi usare loggers: [{Ecto.LogEntry, :log, [:info]}]

+5

Questa impostazione è stata modificata in Ecto 2.0.0, invece di 'log_level:: info' è necessario utilizzare' logger: [{Ecto.LogEntry,: log, [: info]}] '. – Milos

+0

Milo, grazie. Puoi fare una nuova risposta di alto livello per questo? – ghayes

+3

Puoi anche solo fermare Ecto dal logging impostando il valore di 'logger' su una lista vuota, come in' logger: [] '. –