# LoggerJson

[![Deps Status](]( [![ Downloads](]( [![Latest Version](]( [![License](]( [![Build Status](]( [![Coverage Status](]( [![Ebert](](

JSON console back-end for Elixir Logger.

It can be used as drop-in replacement for default `:console` Logger back-end in cases where you use
use Google Cloud Logger or other JSON-based log collectors.

## Log Format

Output JSON is compatible with
[Google Cloud Logger format]( with
additional properties in `serviceLocation` and `metadata` objects:

        "functionName":"test metadata can be configured to :all/1",

## Installation

It's [available on Hex](, the package can be installed as:

  1. Add `logger_json` to your list of dependencies in `mix.exs`:

    def deps do
      [{:logger_json, "~> 0.1.0"}]

  2. Ensure `logger_json` is started before your application:

    def application do
      [extra_applications: [:logger_json]]

  3. Set a `:json_encoder` in your `config/config.exs`:

    config :logger_json,
      backend: [json_encoder: Poison]

## Dynamic configuration

For dynamically configuring the endpoint, such as loading data
from environment variables or configuration files, LoggerJSON provides
an `:on_init` option that allows developers to set a module, function
and list of arguments that is invoked when the endpoint starts.

    config :logger_json, :backend,
      on_init: {YourApp.Logger, :load_from_system_env, []}

## Encoders support

You can replace default Poison encoder with other module that supports `encode!/1` function. This can be even used
as custom formatter callback.

Popular Poison alternatives:

 * [exjsx](
 * [elixir-json]( - native Elixir encoder implementation.

If your application is performance-critical, take look at [jiffy](

## Documentation

The docs can be found at [](