From c1d1a3a6b19228f66d9d02872d23943cc8f8ceba Mon Sep 17 00:00:00 2001 From: Matt Berther Date: Tue, 3 Sep 2019 20:38:22 -0600 Subject: [PATCH] remove support for winston2 and methods supported by winston2 (#221) --- .travis.yml | 1 - daily-rotate-file.js | 164 ++-------------------------------------- package-lock.json | 54 ------------- package.json | 4 +- test/transport-tests.js | 94 +++-------------------- 5 files changed, 20 insertions(+), 297 deletions(-) diff --git a/.travis.yml b/.travis.yml index eb24e11..829ed04 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ node_js: - "10" env: - - WINSTON_VER=winston@2 - WINSTON_VER=winston@3 before_install: diff --git a/daily-rotate-file.js b/daily-rotate-file.js index 5d45934..0c1a21a 100644 --- a/daily-rotate-file.js +++ b/daily-rotate-file.js @@ -4,14 +4,11 @@ var fs = require('fs'); var os = require('os'); var path = require('path'); var util = require('util'); -var semver = require('semver'); var zlib = require('zlib'); var hash = require('object-hash'); -var winston = require('winston'); -var compat = require('winston-compat'); var MESSAGE = require('triple-beam').MESSAGE; var PassThrough = require('stream').PassThrough; -var Transport = semver.major(winston.version) === 2 ? compat.Transport : require('winston-transport'); +var Transport = require('winston-transport'); var loggerDefaults = { json: false, @@ -127,29 +124,13 @@ util.inherits(DailyRotateFile, Transport); DailyRotateFile.prototype.name = 'dailyRotateFile'; var noop = function () {}; -if (semver.major(winston.version) === 2) { - DailyRotateFile.prototype.log = function (level, msg, meta, callback) { - callback = callback || noop; - var options = Object.assign({}, this.options, { - level: level, - message: msg, - meta: meta - }); - - var output = compat.log(options) + options.eol; - this.logStream.write(output); - callback(null, true); - }; -} else { - DailyRotateFile.prototype.normalizeQuery = compat.Transport.prototype.normalizeQuery; - DailyRotateFile.prototype.log = function (info, callback) { - callback = callback || noop; +DailyRotateFile.prototype.log = function (info, callback) { + callback = callback || noop; - this.logStream.write(info[MESSAGE] + this.options.eol); - this.emit('logged', info); - callback(null, true); - }; -} + this.logStream.write(info[MESSAGE] + this.options.eol); + this.emit('logged', info); + callback(null, true); +}; DailyRotateFile.prototype.close = function () { var self = this; @@ -159,134 +140,3 @@ DailyRotateFile.prototype.close = function () { }); } }; - -DailyRotateFile.prototype.query = function (options, callback) { - if (typeof options === 'function') { - callback = options; - options = {}; - } - - if (!this.options.json) { - throw new Error('query() may not be used without the json option being set to true'); - } - - if (!this.filename) { - throw new Error('query() may not be used when initializing with a stream'); - } - - var self = this; - var results = []; - options = self.normalizeQuery(options); - - var logFiles = (function () { - var fileRegex = new RegExp(self.filename.replace('%DATE%', '.*'), 'i'); - return fs.readdirSync(self.dirname).filter(function (file) { - return path.basename(file).match(fileRegex); - }); - })(); - - if (logFiles.length === 0 && callback) { - callback(null, results); - } - - (function processLogFile(file) { - if (!file) { - return; - } - - var logFile = path.join(self.dirname, file); - var buff = ''; - - var stream; - - if (file.endsWith('.gz')) { - stream = new PassThrough(); - fs.createReadStream(logFile).pipe(zlib.createGunzip()).pipe(stream); - } else { - stream = fs.createReadStream(logFile, { - encoding: 'utf8' - }); - } - - stream.on('error', function (err) { - if (stream.readable) { - stream.destroy(); - } - - if (!callback) { - return; - } - - return err.code === 'ENOENT' ? callback(null, results) : callback(err); - }); - - stream.on('data', function (data) { - data = (buff + data).split(/\n+/); - var l = data.length - 1; - - for (var i = 0; i < l; i++) { - add(data[i]); - } - - buff = data[l]; - }); - - stream.on('end', function () { - if (buff) { - add(buff, true); - } - - if (logFiles.length) { - processLogFile(logFiles.shift()); - } else if (callback) { - results.sort(function (a, b) { - var d1 = new Date(a.timestamp).getTime(); - var d2 = new Date(b.timestamp).getTime(); - - return d1 > d2 ? 1 : d1 < d2 ? -1 : 0; - }); - - if (options.order === 'desc') { - results = results.reverse(); - } - - var start = options.start || 0; - var limit = options.limit || results.length; - - results = results.slice(start, start + limit); - - if (options.fields) { - results = results.map(function (log) { - var obj = {}; - options.fields.forEach(function (key) { - obj[key] = log[key]; - }); - return obj; - }); - } - - callback(null, results); - } - }); - - function add(buff, attempt) { - try { - var log = JSON.parse(buff); - if (!log || typeof log !== 'object') { - return; - } - - var time = new Date(log.timestamp); - if ((options.from && time < options.from) || (options.until && time > options.until)) { - return; - } - - results.push(log); - } catch (e) { - if (!attempt) { - stream.emit('error', e); - } - } - } - })(logFiles.shift()); -}; diff --git a/package-lock.json b/package-lock.json index 49f595b..b8c41af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -214,11 +214,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.0.tgz", - "integrity": "sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw==" - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -251,11 +246,6 @@ } } }, - "cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -530,16 +520,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-safe-stringify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.4.tgz", - "integrity": "sha512-mNlGUdKOeGNleyrmgbKYtbnCr9KZkZXU7eM89JRo8vY10f7Ul1Fbj07hUBW3N4fC0xM+fmfFfa2zM7mIizhpNQ==" - }, - "fecha": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", - "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -962,25 +942,6 @@ "chalk": "^2.0.1" } }, - "logform": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-1.9.0.tgz", - "integrity": "sha512-H1gneJlqo1dwmXq52p/X57SztuX20aWQArp69u4x7DDmCkMZgMLtBTm2LMoTz0+wu7HdkICiPj6vBbX8WJFRig==", - "requires": { - "colors": "^1.2.1", - "fast-safe-stringify": "^2.0.4", - "fecha": "^2.3.3", - "ms": "^2.1.1", - "triple-beam": "^1.2.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -1434,11 +1395,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==" - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -1656,16 +1612,6 @@ "string-width": "^1.0.2 || 2" } }, - "winston-compat": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/winston-compat/-/winston-compat-0.1.4.tgz", - "integrity": "sha512-mMEfFsSm6GmkFF+f4/0UJtG4N1vSaczGmXLVJYmS/+u2zUaIPcw2ZRuwUg2TvVBjswgiraN+vNnAG8z4fRUZ4w==", - "requires": { - "cycle": "~1.0.3", - "logform": "^1.6.0", - "triple-beam": "^1.2.0" - } - }, "winston-transport": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.2.0.tgz", diff --git a/package.json b/package.json index 87dd7e0..e30fbf9 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/winstonjs/winston-daily-rotate-file#readme", "peerDependencies": { - "winston": "^2 || ^3" + "winston": "^3" }, "devDependencies": { "chai": "4.2.0", @@ -42,9 +42,7 @@ "dependencies": { "file-stream-rotator": "^0.4.1", "object-hash": "^1.3.0", - "semver": "^6.2.0", "triple-beam": "^1.3.0", - "winston-compat": "^0.1.4", "winston-transport": "^4.2.0" } } diff --git a/test/transport-tests.js b/test/transport-tests.js index b3ed7cc..a346c0b 100644 --- a/test/transport-tests.js +++ b/test/transport-tests.js @@ -6,31 +6,26 @@ var path = require('path'); var expect = require('chai').expect; var rimraf = require('rimraf'); var moment = require('moment'); -var semver = require('semver'); var winston = require('winston'); var MemoryStream = require('./memory-stream'); var randomString = require('./random-string'); var DailyRotateFile = require('../daily-rotate-file'); function sendLogItem(transport, level, message, meta, cb) { // eslint-disable-line max-params - if (semver.major(winston.version) === 2) { - transport.log(level, message, meta, cb); - } else { - var logger = winston.createLogger({ - transports: [transport] - }); + var logger = winston.createLogger({ + transports: [transport] + }); - transport.on('logged', function () { - if (cb) { - cb(null, true); - } - }); + transport.on('logged', function () { + if (cb) { + cb(null, true); + } + }); - logger.info({ - level: level, - message: message - }); - } + logger.info({ + level: level, + message: message + }); } describe('winston/transports/daily-rotate-file', function () { @@ -46,7 +41,6 @@ describe('winston/transports/daily-rotate-file', function () { var transport = new DailyRotateFile({stream: new MemoryStream()}); expect(transport).to.be.instanceOf(DailyRotateFile); expect(transport).to.respondTo('log'); - expect(transport).to.respondTo('query'); }); it('should not allow invalid characters in the filename', function () { @@ -182,69 +176,5 @@ describe('winston/transports/daily-rotate-file', function () { self.transport.close(); }); }); - - describe('query', function () { - it('should call callback when no files are present', function () { - this.transport.query(function (err, results) { - expect(results).to.not.be.null; - expect(results.length).to.equal(0); - }); - }); - - it('should raise error when calling with stream', function () { - expect(function () { - var transport = new DailyRotateFile({stream: new MemoryStream()}); - transport.query(null); - }).to.throw(); - }); - - it('should raise error when calling with json set to false', function () { - expect(function () { - var opts = Object.assign({}, options); - opts.json = false; - var transport = new DailyRotateFile(opts); - transport.query(null); - }).to.throw(); - }); - - it('should return log entries that match the query', function (done) { - sendLogItem(this.transport, 'info', randomString(1056)); - sendLogItem(this.transport, 'info', randomString(1056)); - sendLogItem(this.transport, 'info', randomString(1056)); - sendLogItem(this.transport, 'info', randomString(1056)); - - var self = this; - this.transport.on('finish', function () { - self.transport.query(function (err, results) { - expect(results).to.not.be.null; - expect(results.length).to.equal(4); - done(); - }); - }); - - this.transport.close(); - }); - - it('should search within archived files', function (done) { - var opts = Object.assign({}, options); - opts.zippedArchive = true; - opts.maxSize = '1k'; - - this.transport = new DailyRotateFile(opts); - - sendLogItem(this.transport, 'info', randomString(1056)); - sendLogItem(this.transport, 'info', randomString(1056)); - - var self = this; - - self.transport.on('archive', function () { - self.transport.query(function (err, results) { - expect(results).to.not.be.null; - expect(results.length).to.equal(2); - done(); - }); - }); - }); - }); }); });