       config :logger, :console,
         format: "\n$time $metadata[$level] $levelpad$message\n",
         metadata: [:user_id]
-
-  ## Metadata
-
-  In addition to the keys provided by the user via `Logger.metadata/1`,
-  the following extra keys are available to the `:metadata` list:
-
-    * `:application` - the current application
-
-    * `:module` - the current module
-
-    * `:function` - the current function
-
-    * `:file` - the current file
-
-    * `:line` - the current line
-
-    * `:pid` - the current process identifier
-
-    * `:crash_reason` - a two-element tuple with the throw/error/exit reason
-      as first argument and the stacktrace as second. A throw will always be
-      `{:nocatch, term}`. An error is always an `Exception` struct. All other
-      entries are exits. The console backend ignores this metadata by default
-      but it can be useful to other backends, such as the ones that report
-      errors to third-party services
-
-    * `:initial_call` - the initial call that started the process
-
-    * `:registered_name` - the process registered name as an atom
-
-  Note that all metadata is optional and may not always be available.
-  The `:module`, `:function`, `:line`, and similar metadata are automatically
-  included when using `Logger` macros. `Logger.bare_log/3` does not include
-  any metadata beyond the `:pid` by default. Other metadata, such as
-  `:crash_reason`, `:initial_call`, and `:registered_name` are extracted
-  from Erlang/OTP crash reports and available only in those cases.
 
   ### Custom formatting
 

  @doc """
  Adds a new backend.

  Backends added by this function are not persisted. Therefore
  if the Logger application or supervision tree is restarted,
  the backend won't be available. If you need this guarantee,
  then configure the backend via the application environment.

  ## Options

    * `:flush` - when `true`, guarantees all messages currently sent
      to `Logger` are processed before the backend is added

  """
  @spec add_backend(backend, keyword) :: Supervisor.on_start_child()


  where `options` is a keyword list. The result of the call is
  the result returned by `configure_backend/2`. The recommended
  return value for successful configuration is `:ok`. For example

      def handle_call({:configure, options}, state) do
        new_state = reconfigure_state(state, options)
        {:ok, :ok, new_state}
      end

  It is recommended that backends support at least the following
  configuration options:
