A Papertrail backend for Elixir Logger
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
lib
test
.gitignore
.travis.yml
CHANGELOG.md
LICENSE.md
README.md
mix.exs
mix.lock

README.md

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.