0.1.0 • Published 7 years ago

loglevel-remote v0.1.0

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

loglevel-remote

Plugin for sending loglevel messages to a remote server

Features

  • Sends asynchronously and does not slow down the application
  • Messages are sent one by one, so the order is maintained
  • Support any server that accepts a Post request
  • Support string substitutions like console and node.js (%s, %d, %j, %o)

Installation

npm install loglevel-remote --save

API

remote(log[, options]);

log - root logger, imported from loglevel package

options - configuration object

default_options = {
  url: window.location.origin
    ? window.location.origin + '/logger'
    : document.location.origin + '/logger',
  call: true,
  timeout: 5000,
  trace: ['trace', 'warn', 'error'],
  clear: 1
}
  • url - URL of log server API
  • call - if set to true, then the original loglevel method will be called
  • timeout - number of milliseconds a request can take before automatically being terminated MDN
  • trace - lots of levels for which to add the stack trace
  • clear - the number of rows to clean stack trace

Base usage

Browser directly

Download production version and copy to your project folder

<script src="loglevel.min.js"></script>
<script src="loglevel-remote.min.js"></script>

<script>
  remote(log);
  log.warn('message');
</script>

ES6

import log from 'loglevel';
import remote from 'loglevel-remote';

remote(log);
log.warn('message');

CommonJS

var log = require('loglevel');
var remote = require('loglevel-remote');
remote(log);

// or
// var log = require('loglevel-remote')(require('loglevel'));

log.warn('message');

AMD

define(['loglevel', 'loglevel-remote'], function(log, remote) {
  remote(log);
  log.warn('message');
});

Example

var log = require('loglevel');
var remote = require('loglevel-remote');

log.setLevel('trace');

remote(log);

log.info();

function Rectangle(width, height) {
  this.height = height;
  this.width = width;
}
var object = new Rectangle(10, 10);
log.info('object: %o', object);

var date = new Date();
log.info('date: %o', date);

var error = new Error('My error');
log.info('error: %o', error);

var string = 'My string';
log.info('string: %o', string);

var number = 123;
log.info('number: %o', number);

var bool = true;
log.info('boolean: %o', bool);

var array = [1, 2, 3];
log.info('array: %o', array);

log.trace('trace message');
log.debug('debug message');
log.info('info message');
log.warn('warn message');
log.error('error message');

log.info('%% %t %s', 'one', 'two');
log.info('number substitutions %d %d %d %d', 16, 1e6, '16', '1e6');
log.info('%s, %d, %o, %j', object, object, object, object, object);

Output

object: Rectangle{"height":10,"width":10}
date: Date<"2017-06-04T13:16:01.455Z">
error: Error{}
string: String<"My string">
number: Number<123>
boolean: Boolean<true>
array: Array[1,2,3]
trace message
    at http://localhost:8080/js/test.js:35:5
debug message
info message
warn message
    at http://localhost:8080/js/test.js:38:5
error message
    at http://localhost:8080/js/test.js:39:5
% %t one two
number substitutions 16 1000000 16 1000000
[object Object], NaN, Rectangle{"height":10,"width":10}, {"height":10,"width":10} [object Object]