Skip to content

JoelRoxell/kleio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kleio Build Status

Functional logger which purpose is to simplify debugging and error management during production and development phases. In essence kleio provides the common error-level/severity system based on npm logging levels. Kleio provides a simple and minimal API in order to send debugging information to a remote host with ease.

Installation

npm install kleio --save

Usage

Note: The logger is invoked when last parameter has be acquired.

Create a reusable functional logger

let log = kleio(/* environment */)(/* post implementation */);

log(/* message */)(/* severity */)(/* meta-data */);
// Or
log(/* message */, /* severity */, /* meta-data */);

Log object

Passed to the post function parameter.

Log {
  time: String,
  message: String,
  severity: Number,
  meta: Object
}

Log levels

Levels are defined using integer values 0(high) to 6(low).

{
  ERROR: 0,
  WARN: 1,
  INFO: 2,
  VERBOSE: 3,
  DEBUG: 4,
  SILLY: 5,
  SILENT: 6
}

A simple use case

import kleio, { LEVELS } from 'kleio';

const postFunction = function(log) {
  fetch('/log', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(log)
  });
}

let log = kleio(process.env.NODE_ENV)(postFunction);

log(LEVELS.ERROR)('Hello log!')({
  'some': 'additional data that might be valuable.'
});

log(LEVELS.DEBUG)('A test log')();

log(LEVELS.ERROR)('Perform something after post')()
  .then(res => { /* ... */ });
  .catch(err => { /* ... */ });

A more advanced use case

// services/log.js
import kleio, { LEVELS } from 'kleio';

const env = process.env.NODE_ENV || 'development';

const developmentLogger = kleio(env)(function(log) {
  return fetch('/log/to/development/server', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(log)
  }).then(checkStatus);
});
const productionLogger = kleio(env)(function(log) {
  return fetch('/log/to/production/server', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(log)
  }).then(checkStatus);
});

function checkStatus(response) {
  if (response.status >= 200 && response.status < 300) {
    return response;
  } else {
    return Promise.reject(response);
  }
}

export const error = productionLogger(LEVELS.ERROR);
export const warn = productionLogger(LEVELS.WARN);
export const log = developmentLogger(LEVELS.SILLY);
export const info = developmentLogger(LEVELS.INFO);
export const debug = developmentLogger(LEVELS.DEBUG);
export const verbose = developmentLogger(LEVELS.VERBOSE);

// antoher-file.js
import { log, error, info, debug, verbose } from 'services/log';

log('A silly log', 1339);

error('Error message', { /* ... */ }).then(function(res) {
    /* ... */
  })
  .catch(function(e) {
    /* ... */
  });

info('Info message', 123);

debug('Debug message', {
  x: 10
});

verbose('Verbose', [
  {
    x: 10
  },
  {
    x: 20
  }
]);

Post directly

import kleio from 'kleio';

kleio(
  /* post implementation */,
  /* environment */,
  /* message */,
  /* severity */,
  /* meta-data */
).then(res => { /* ... */}).catch(err => { /* ... */});

// or

kleio(/* post implementation */)
  (/* environment */)
  (/* message */)
  (/* severity */)
  (/* meta-data */)
  .then(res => { /* ... */})
  .catch(err => { /* ... */});

Tests

npm test

License

MIT

About

Lightweight logging framework which simplifies logging during development and production.

Resources

Stars

Watchers

Forks

Packages

No packages published