/logger_papertrail_backend

A Papertrail backend for Elixir Logger

Primary LanguageElixirMIT LicenseMIT

LoggerPapertrailBackend

Hex.pm Hex.pm Build Status

A Papertrail backend for Elixir Logger.

Changelog

Installation

Available in Hex. The package can be installed as:

  • Add logger_papertrail_backend to your list of dependencies in mix.exs:
def deps do
  [{:logger_papertrail_backend, "~> 1.0"}]
end
  • Ensure logger and logger_papertrail_backend is started before your application (pre Elixir 1.4):
def application do
  [applications: [:logger, :logger_papertrail_backend]]
end
  • Or after Elixir 1.4, just ensure Logger is in extra_applications:
def application do
  [extra_applications: [:logger]]
end
  • In your config.exs (or in your #{Mix.env}.exs-files):
config :logger, :logger_papertrail_backend,
  host: "logs.papertrailapp.com:<port>",
  level: :warn,
  system_name: "Wizard",
  format: "$metadata $message"

Alternatively use :url for shorter config. Prepend with "papertrail://" (or whatever as long its a valid URI), then host:port/system_name. We normally set an ENV-var: url: System.get_env("PAPERTRAIL_URL") or url: "${PAPERTRAIL_URL}", if building releases with Distillery and REPLACE_OS_VARS=true.

config :logger, :logger_papertrail_backend,
  url: "papertrail://logs.papertrailapp.com:<port>/<system_name>",
  level: :warn,
  format: "$metadata $message"

Then config :logger to use the LoggerPapertrailBackend.Logger:

config :logger,
  backends: [ :console,
    LoggerPapertrailBackend.Logger
  ],
  level: :debug

Note: if you have an umbrella project, use your top config.exs.

  • (Required) Follow "Add System" in your Papertrail dashboard to get :host values
  • (Optional) Set :level for this backend (overides global :logger-setting )
  • (Optional) Set specific :system_name in Papertrail, defaults to current application-name
  • (Optional) Set :format, defaults to [$level] $levelpad$metadata $message, see Logger.Formatter
  • Other supported options in config are :colors, :metadata. See :console-docs in Elixir.Logger

Example output:

Oct 02 14:19:04 Wizard UpptecSlack.SlackBot: [info] Successfully authenticated as user "wizard" on team "Upptec"

Papertrail sets timestamp when message arrives. Wizard is :system_name. UpptecSlack.SlackBot is the module sending the log. [Info] is level.