1.0.0 • Published 7 years ago

kleio v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

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

1.0.0

7 years ago

0.3.8

8 years ago

0.3.7

8 years ago

0.3.6

8 years ago

0.3.5

8 years ago

0.3.4

8 years ago

0.3.3

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.1.1

8 years ago