Phoenix logger format

Hello,
I have this in prod.exs:

config :logger,
      level: :info,
      backends: [:console],
      compile_time_purge_level: :info,
      metadata: [:request_id],
      format: "$time $metadata[$level] $metadata[$request_id] $message\n"

and I still get this like logger output:

13:55:01.183 [info]  GET /sessions/new
13:55:01.185 [info]  Sent 200 in 1ms

I use this:

Hex:    0.18.2
Elixir: 1.7.4
OTP:    21.1.1
distillery: 1.5.5
phoenix: 1.4.0

Any idea where can be problem?

You should rebuild phoenix for this to take effect (mix deps.clean.)

This happens to me so often and I always forget. Basically, the format is specific to the backend, so you have to add this to your config:

config :logger, :console,
      metadata: [:request_id],
      format: "$time $metadata[$level] $metadata[$request_id] $message\n"

Edit: and IIRC $metadata is just a list of the metadata variables. So you can’t “access” it. So you’re format probably should be: format: "$time $metadata[$level] $message\n" or you’ll just repeat $metadata twice (and I don’t think $request_id will expand to anything at all)

1 Like

Prod still doesn’t work.
I got this in log:

10:02:56.476 [info]  Sent 200 in 11ms
10:03:17.514 [info]  POST /api/v1/

and I have this in config:

config :logger,
  level: :info,
  backends: [:console],
  compile_time_purge_level: :info,
  metadata: [:request_id],
  format: "$time $metadata[$level] $metadata[$request_id] $message\n"

These lines are coming from Plug.Logger, see this. To remove them, add log: debug to the plug init in your endpoint.ex like this:

plug Plug.Logger, log: :debug

Those log lines will now only appear in development.