From 7737143c918cd76cc0d2318afc206011d9c7f628 Mon Sep 17 00:00:00 2001 From: Anton Johansson Date: Sat, 9 Mar 2019 00:46:08 +0100 Subject: [PATCH] Add support for `loggerName` --- README.md | 14 ++++++++++++++ index.test.js | 13 +++++++++++++ lib/logger.js | 14 +++++++++++--- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bf482af..e66cfd9 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,20 @@ Level and output: | `{ level: 'fatal' }` | - | - | - | - | - | O | | `{ level: 'none' }` | - | - | - | - | - | - | +## loggerName +Specify the name of the logger. Useful when logging from different files. +```js +const Logger = require('node-json-logger'); +const logger = new Logger({ loggerName: 'server/index.js' }); + +logger.info('message'); +``` + +Output: +```json +{"timestamp":"2001-03-14T01:00:00.000Z","level":"info","loggerName":"server/index.js","message":"message"} +``` + ## timestamp Specify enable or disable timestamp. (optional, default is true) diff --git a/index.test.js b/index.test.js index e2782b4..9d26acc 100644 --- a/index.test.js +++ b/index.test.js @@ -162,3 +162,16 @@ test('Timezone can be declared with config.', t => { t.is('America/Sao_Paulo', logger.options.timezone); }); }); + +test('Logger name can be set', t => { + const console = new Console(); + const logger = new Logger({ level: 'info', loggerName: 'server/index.js' }); + const timestamp = "2001-03-14T01:00:00.000Z"; + logger.timestamp = () => timestamp; + logger.writeln = o => console.log(JSON.stringify(o)); + + logger.info('Hello world!'); + const expected = `{"timestamp":"${timestamp}","level":"info","loggerName":"server/index.js","message":"Hello world!"}`; + const actual = console.last(); + t.is(expected, actual); +}); diff --git a/lib/logger.js b/lib/logger.js index 31b6f6d..13a0a2a 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -17,9 +17,17 @@ module.exports = class Logger { this.writeln = $object => console.log(JSON.stringify($object)); - this.head = this.options.timestamp - ? level => ({ timestamp: this.timestamp(), level: level }) - : level => ({ level: level }); + this.head = level => { + const data = {}; + if (this.options.timestamp) { + data.timestamp = this.timestamp(); + } + data.level = level; + if (this.options.loggerName) { + data.loggerName = this.options.loggerName; + } + return data; + }; this.trace = this.debug = this.info = this.warn = this.error = this.fatal = () => { }; const level = levels.includes(this.options.level) ? this.options.level : 'debug';