1.0.3 • Published 6 years ago

phobos-logger v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
6 years ago

phobos-logger

Message and data logger for nodejs. Features:

  • Multiple transport channels
  • Child logger with different category name
  • Log rotation
  • Customised date formatter
  • External log handler (data in JSON object)

Install

npm i phobos-logger --save

Definitions

Log Levels:

LOG_LEVELS = ['all', 'debug', 'info', 'warn', 'error', 'fatal'];

Default date display format

`${date.getFullYear()}-${date.getMonth()}-${date.getDate()} ${date.toTimeString()}`;

Usage

const Logger = require('@tillpayments/node-logger');

/**
 * Create a logger by config object:
 * - category {string} - [optional] logger category name, default to value "main"
 * - transports {array} - array of transport definitions, optional attributes see inline comment
 *   - type: ['file', 'console']
 *   - level: <log_level>
 */
const log = Logger({
  transports: [{
    type: 'console',
    level: 'debug',
  }, {
    type: 'file',
    level: 'debug',
    writeJson: false, // true to wrap whole log line into JSON object
    maxSize: 1000, // 1000 KB per file
    maxRotation: 5, // keep 5 historical rotation logs
    filePath: './test.log',
  }],
});

// data can be: string, number, boolean, array, object
const data = { key: 'value' };

// message is mandatory, data is optional
log.log('all', 'all message', data);
log.log('debug', 'debug message');
log.log('info', 'info message');
log.log('warn', 'warn message');
log.log('error', 'error message');
log.log('fatal', 'fatal message');

log.all('all message', data);
log.debug('debug message');
log.info('info message');
log.warn('warn message');
log.error('error message');
log.fatal('fatal message');

Override dateFormatter:

// set dateFormatter
log.setDateFormatter((d) => `${d.getTime()}`); // where d is a Date object
// remove customised dateFormatter
log.setDateFormatter();

Add external handler

const t = {
  is(value, expected) { console.log(value === expected); },
};
const message = 'some message';
const data = { some: 'data' };
log.addLogHandler((logData) => {
  t.is(logData.category, 'main');
  t.is(logData.message, message);
  t.is(logData.level, 'info');
  t.is(logData.data, data);
}, {
  level: 'info', // optional config, handle specific level and above
  category: 'main', // optional config, handle specific category
});

log.info(message, data);

// clear handlers
log.clearLogHandlers();

Create child logger with a different log category

const cLog = log.getChildLogger('child');

const context = { key: 'value' };
const cLog2 = log.getChildLogger('child', context);

const data = { key: 'value' };
cLog.info('message', data);
cLog2.info('message', data);

Contribute

Source code syntax check

npm run lint

Unit tests:

npm test
1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago