From e5a49191d7cbbaf5e85f305ecc637395e9971175 Mon Sep 17 00:00:00 2001 From: zhangzifa Date: Mon, 30 Nov 2015 11:21:46 +0800 Subject: [PATCH] add timestamp options --- README.md | 1 + index.js | 15 +++++++++++---- package.json | 1 + test/index.test.js | 16 ++++++++++++++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f4672d3..58a3305 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ logger.http('http request url: %s', 'https://github.com'); * **flushInterval**: all logs will cache in memory first, every `flushInterval` ms flush into files. default is `1s` * **duration**: cut the logs every `duration` ms. default is `1h` * **mkdir**: everytime before create a writeStream, will try to `mkdirp` first. useful when format is like `YYYY/MM/DD/[{category}.log]`, default to false +* **timestamp**: write timestamp with format YYYYMMDDHHmmssSSS before every line of logs, default is false ### Events diff --git a/index.js b/index.js index 75dfb95..4636b73 100644 --- a/index.js +++ b/index.js @@ -18,9 +18,11 @@ var copy = require('copy-to'); var util = require('util'); var ms = require('ms'); var os = require('os'); +var YYYYMMDDHHmmssSSS = require('utility').YYYYMMDDHHmmssSSS; var SEPERATOR = os.EOL + os.EOL; + /** * Expose `Logger` */ @@ -33,7 +35,8 @@ var defaultOptions = { stdout: false, file: true, errorFormatter: formatter, - seperator: SEPERATOR + seperator: SEPERATOR, + timestamp: false } function Logger(options) { @@ -105,8 +108,12 @@ Logger.prototype._init = function() { }; Logger.prototype._write = function (category, msg) { + var now = ''; + if (this._options.timestamp) { + now = YYYYMMDDHHmmssSSS() + ' '; + } // write to file - if (this._options.file && this._streams[category]) this._streams[category].write(msg); + if (this._options.file && this._streams[category]) this._streams[category].write(now + msg); /* istanbul ignore next */ // write to stdout @@ -117,8 +124,8 @@ Logger.prototype._write = function (category, msg) { } category === 'error' - ? process.stderr.write(msg) - : process.stdout.write(msg); + ? process.stderr.write(now + msg) + : process.stdout.write(now + msg); } }; diff --git a/package.json b/package.json index 6512b33..972badb 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "should": "~4.0.4" }, "dependencies": { + "utility": "~1.6.0", "copy-to": "~1.0.1", "error-formatter": "~1.0.3", "iconv-lite": "~0.4.4", diff --git a/test/index.test.js b/test/index.test.js index 9b2e7e9..096b8fd 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -175,4 +175,20 @@ describe('mini-loger', function () { should.not.exist(logger._streams.error); }); }); + + describe('Logger.timestamp', function () { + it('should exist timestamp ', function () { + var logger = Logger({dir: logdir, timestamp: true, categories:['timestamp']}); + logger.timestamp('logtext with timestamp'); + logger.flush('timestamp'); + var patt = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3} logtext with timestamp/g; + setTimeout(function () { + var content = fs.readFileSync(logger.getPath('timestamp'), 'utf-8'); + var match = patt.exec(content); + shoudl.notEqual(match, null); + done(); + }, 100); + }); + }); + });