View Source Credo.Check.Warning.MissedMetadataKeyInLoggerConfig (Credo v1.7.2-rc.4)

This check has a base priority of high and works with any version of Elixir.

Explanation

Ensures custom metadata keys are included in logger config.

Note that all metadata is optional and may not always be available.

For example, you might wish to include a custom :error_code metadata in your logs:

Logger.error("We have a problem", [error_code: :pc_load_letter])

In your app's logger configuration, you would need to include the :error_code key:

config :logger, :default_formatter,
  format: "[$level] $message $metadata\n",
  metadata: [:error_code, :file]

That way your logs might then receive lines like this:

[error] We have a problem error_code=pc_load_letter file=lib/app.ex

If you want to allow any metadata to be printed, you can use :all in the logger's metadata config.

Check-Specific Parameters

Use the following parameters to configure this check:

:ignore_logger_functions

Do not raise an issue for these Logger functions.

This parameter defaults to nil.

:metadata_keys

Do not raise an issue for these Logger metadata keys.

By default, we read the metadata keys configured as the current environment's :default_formatter (or :console for older versions of Elixir).

You can use this parameter to dynamically load the environment/backend you care about, via .credo.exs (e.g. reading the :file_log config from config/prod.exs):

  {Credo.Check.Warning.MissedMetadataKeyInLoggerConfig,
    [
      metadata_keys:
        "config/prod.exs"
        |> Config.Reader.read!()
        |> get_in([:logger, :file_log, :metadata])
    ]}

This parameter defaults to [].

General Parameters

Like with all checks, general params can be applied.

Parameters can be configured via the .credo.exs config file.