LoggerPapertrailBackend
A Papertrail backend for Elixir Logger.
Installation
Available in Hex. The package can be installed as:
- Add
logger_papertrail_backend
to your list of dependencies inmix.exs
:
def deps do
[{:logger_papertrail_backend, "~> 1.0"}]
end
- Ensure
logger
andlogger_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 inextra_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.