Basic configuration and tooling shared across applications
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.eslintrc.json fix(es6): add eslint, convert GhostLogger to proper class Jul 14, 2017
.gitignore
.travis.yml
LICENSE
README.md Updated tooling to use new standards (#61) Jul 16, 2018
index.js
package.json Updated tooling to use new standards (#61) Jul 16, 2018
yarn.lock Updated tooling to use new standards (#61) Jul 16, 2018

README.md

Ignition

Build Status

Basic configuration and tooling shared across applications

Logging

var logging = require('ghost-ignition').logging({
    domain: 'example.com,
    env: 'production',
    mode: 'long',
    level: 'info',
    transports: ['file'],
    rotation: {enabled: true, period: '1d', count: 10},
    path: '/var/log'
});

mode         : long|short (default is `short`) - defines the output volume (helpful when logging requests)
level        : info|error|debug (default is `info`)
transports   : stdout|file|stderr (default is `['stdout']`)
path         : is used when file transport is enabled (default is `process.cwd()`)

logging.info({req: req, res: res});
logging.info('Info');
logging.error(new Error());
logging.warn('this', 'is', 'a', 'warning');
logging.debug('this is a debug mode');

env parameter

Each config option, can be passed as an environment variable: E.g. LEVEL=error or MODE=long.

There is also a special env var

LOIN=true

Which sets the LEVEL to info and the MODE to long, for maximum output.

Logging into file

We log JSON format into file. This is very easy to forward and easy to interprete. By default we create two log files:

  • errors log entries: contains only errors
  • all log entries: contains everything

You can easily make the log files readable by calling: cat your.log | bunyan

Loggly Stream

You can send your logs to loggly by configuring the logger like this:

var logging = require('ghost-ignition').logging({
    domain: 'example.com,
    env: 'production',
    mode: 'long',
    level: 'info',
    transports: ['file', 'loggly'],
    rotation: {enabled: true, period: '1d', count: 10},
    path: '/var/log',
    loggly: {
      token: 'your-token',
      subdomain: 'your-subdomain',
      match: 'regex as string to match specific properties only certain log entries'
    }
});

Example for match:
match: 'level:critical'
match: 'statusCode:500|statusCode:403'

NOTE: The loggly stream will only send error logs. Furthermore, you can only match a string in the error object.

Utils

var errors = require('ghost-ignition');

// you can pass any error and ignition will tell you if this is a custom ignition error
errors.utils.isIgnitionError(err);

// serialize an error to a specific format
errors.utils.serialize(err, {format: 'jsonapi|oauth'});

// deserialize specific format to error instance
errors.utils.deserialize(err);

Development

Publish

  • yarn ship

Copyright & License

Copyright (c) 2016-2018 Ghost Foundation - Released under the MIT license.