Comparing version 1.0.1 to 1.0.2
63
index.js
'use strict' | ||
var base = require('./lib/transporter') | ||
var logger = require('./lib/logger') | ||
module.exports = require('./lib/logger') | ||
module.exports.init = function (config) { | ||
if (config && !config.transports) { | ||
throw new Error('Logger: No logging transports supplied') | ||
} | ||
module.exports.levels = require('./lib/levels') | ||
var debugTransports = base.levelTransports(config, 'debug') | ||
var infoTransports = base.levelTransports(config, 'info') | ||
var noticeTransports = base.levelTransports(config, 'notice') | ||
var warningTransports = base.levelTransports(config, 'warning') | ||
var errorTransports = base.levelTransports(config, 'error') | ||
var critTransports = base.levelTransports(config, 'crit') | ||
var alertTransports = base.levelTransports(config, 'alert') | ||
var emergTransports = base.levelTransports(config, 'emerg') | ||
this._debug = logger.debug(debugTransports) | ||
this._info = logger.info(infoTransports) | ||
this._notice = logger.notice(noticeTransports) | ||
this._warning = logger.warning(warningTransports) | ||
this._error = logger.error(errorTransports) | ||
this._crit = logger.crit(critTransports) | ||
this._alert = logger.alert(alertTransports) | ||
this._emerg = logger.emerg(emergTransports) | ||
} | ||
module.exports.debug = function (msg) { | ||
this._debug.debug(msg) | ||
} | ||
module.exports.info = function (msg) { | ||
this._info.info(msg) | ||
} | ||
module.exports.notice = function (msg) { | ||
this._notice.notice(msg) | ||
} | ||
module.exports.warning = function (msg) { | ||
this._warning.warning(msg) | ||
} | ||
module.exports.error = function (msg) { | ||
this._error.error(msg) | ||
} | ||
module.exports.crit = function (msg) { | ||
this._crit.crit(msg) | ||
} | ||
module.exports.alert = function (msg) { | ||
this._alert.alert(msg) | ||
} | ||
module.exports.emerg = function (msg) { | ||
this._emerg.emerg(msg) | ||
} | ||
module.exports.log = function (level, msg) { | ||
this[level](msg) | ||
} | ||
module.exports.middleware = require('./lib/middleware/') |
'use strict' | ||
var winston = require('winston') | ||
const winston = require('winston') | ||
winston.setLevels(winston.config.syslog.levels) | ||
module.exports.level = function (level) { | ||
if (isNaN(level)) { | ||
switch (level) { | ||
case 'debug': | ||
return 7 | ||
case 'info': | ||
return 6 | ||
case 'notice': | ||
return 5 | ||
case 'warning': | ||
return 4 | ||
case 'error': | ||
return 3 | ||
case 'crit': | ||
return 2 | ||
case 'alert': | ||
return 1 | ||
case 'emerg': | ||
return 0 | ||
default: | ||
throw new Error( | ||
'Logger: The level number should be [\'debug\', \'info\', \'notice\', \'warning\', \'error\', \'crit\', \'alert\', ' + | ||
'\'debug\', emerg] but got ' + level) | ||
} | ||
} else { | ||
switch (parseInt(level, 10)) { | ||
case 7: | ||
return 'debug' | ||
case 6: | ||
return 'info' | ||
case 5: | ||
return 'notice' | ||
case 4: | ||
return 'warning' | ||
case 3: | ||
return 'error' | ||
case 2: | ||
return 'crit' | ||
case 1: | ||
return 'alert' | ||
case 0: | ||
return 'emerg' | ||
default: | ||
throw new Error('Logger: The level number should be [7..0] but got ' + level) | ||
} | ||
} | ||
} | ||
const Utils = require('./utils') | ||
module.exports.logger = function (level, transports) { | ||
var levels = {} | ||
levels[level] = this.level(level) | ||
levels[level] = Utils.level(level) | ||
return new winston.Logger({ | ||
@@ -58,0 +12,0 @@ levels: levels, |
'use strict' | ||
var base = require('./base') | ||
const Transporter = require('./transporter') | ||
const Base = require('./base') | ||
const Levels = require('./levels') | ||
module.exports.debug = function (transports) { | ||
return base.logger('debug', transports) | ||
} | ||
function Logger () {} | ||
module.exports.info = function (transports) { | ||
return base.logger('info', transports) | ||
} | ||
Logger.prototype.init = function (config) { | ||
if (config && !config.transports) { | ||
throw new Error('Logger: No logging transports supplied') | ||
} | ||
module.exports.notice = function (transports) { | ||
return base.logger('notice', transports) | ||
for (let lvl of Levels.toArray()) { | ||
this[lvl] = Base.logger(lvl, Transporter.levelTransports(config, lvl))[lvl] | ||
} | ||
} | ||
module.exports.warning = function (transports) { | ||
return base.logger('warning', transports) | ||
Logger.prototype.log = function (lvl, msg) { | ||
this[lvl](msg) | ||
} | ||
module.exports.error = function (transports) { | ||
return base.logger('error', transports) | ||
} | ||
module.exports.crit = function (transports) { | ||
return base.logger('crit', transports) | ||
} | ||
module.exports.alert = function (transports) { | ||
return base.logger('alert', transports) | ||
} | ||
module.exports.emerg = function (transports) { | ||
return base.logger('emerg', transports) | ||
} | ||
module.exports = new Logger() |
'use strict' | ||
var winston = require('winston') | ||
const winston = require('winston') | ||
require('winston-syslog').Syslog | ||
const formatter = require('./formatter') | ||
module.exports.levelTransports = function (config, level) { | ||
@@ -19,5 +21,8 @@ var transportsArray = [] | ||
Object.assign(options, formatter) | ||
if (lvl.indexOf(level) > -1) { | ||
switch (transport) { | ||
case 'console': | ||
options.silent = (options.silent != null) ? options.silent : (process.env.NODE_ENV === 'test') | ||
transportsArray.push(new (winston.transports.Console)(options)) | ||
@@ -24,0 +29,0 @@ break |
{ | ||
"name": "@c8/logger", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Easy to use (config-based) wrapper around winston logger", | ||
@@ -16,3 +16,3 @@ "main": "index.js", | ||
"standard": "standard --verbose", | ||
"test": "mocha" | ||
"test": "NODE_ENV=test mocha" | ||
}, | ||
@@ -38,5 +38,7 @@ "repository": { | ||
"code": "^2.2.0", | ||
"express": "^4.13.4", | ||
"istanbul": "^0.4.3", | ||
"mocha": "^2.4.5", | ||
"standard": "^6.0.8", | ||
"supertest": "^1.2.0", | ||
"test-console": "^1.0.0" | ||
@@ -43,0 +45,0 @@ }, |
@@ -1,6 +0,6 @@ | ||
# C8-Logger | ||
# Logger | ||
Easy to use (config-based) wrapper around winston logger | ||
# Available Transports | ||
## Available Transports | ||
@@ -10,6 +10,6 @@ - Console | ||
- SysLog (currently on hold) | ||
# Available log levels | ||
## Available log levels | ||
- `7` -> `debug` | ||
@@ -23,5 +23,8 @@ - `6` -> `info` | ||
- `0` -> `emerg` | ||
# Usage | ||
## Installation | ||
`npm i @c8/logger` | ||
## Usage | ||
```javascript | ||
@@ -57,4 +60,40 @@ | ||
# Tests | ||
### Middleware | ||
In order to use the logger as an Express middleware you should add: | ||
``` | ||
var loggerMiddleware = logger.middleware.Express | ||
server.use(loggerMiddleware.debug) | ||
// or | ||
server.get('/', loggerMiddleware.debug, function (req, res) { | ||
res.status(200) | ||
} | ||
``` | ||
The middleware logger uses the same config you pass in `logger.init(/*config*/)` and depending on the log level method you use the middleware with it will be sent to the transport specified in the config. | ||
The middleware can be used globally before any route `server.use(loggerMiddleware.debug)` or route specific `server.get('/route', loggerMiddleware.debug, function (req, res) {...})` | ||
All error logs are pushed using levels `error`, `crit`, `alert`, `emerg` and should be defined *under* the route declaration: | ||
``` | ||
// ^^^ all routes are defined above ^^^ | ||
// use 'error' method for error printing | ||
server.use(loggerMiddleware.error) | ||
``` | ||
### Formatting | ||
Logger has a default log messages formatting. There are 2 different use-cases on how the formatting will look like: | ||
#### `logger.debug('log message')` | ||
- `{{timestamp}} {{hostname}} {{logLevel}} {{logMessage}}` | ||
#### `logger.debug('log message', new Error('My Log Error'))` | ||
- `{{timestamp}} {{hostname}} {{errorType}}:{{errorMessage}} {{path:line:column}} {{logLevel}} {{logMessage}}` | ||
## Tests | ||
Run the following commands: | ||
@@ -64,6 +103,6 @@ - `npm run test` for unit tests | ||
- `npm run coverage` for code coverage | ||
# Licence | ||
## Licence | ||
MIT Licence | ||
© Copyright 2016 C8 MANAGEMENT LIMITED |
/* eslint-env mocha */ | ||
'use strict' | ||
var logger = require('../../index') | ||
const Logger = require('../../index') | ||
const Levels = require('../../lib/levels') | ||
var CONFIG = { | ||
let CONFIG = { | ||
transports: { | ||
console: { | ||
level: ['debug', 'info', 'notice', 'warning', 'error', 'crit', 'alert', 'emerg'], | ||
level: Levels.toArray(), | ||
options: { | ||
silent: true | ||
silent: false | ||
} | ||
@@ -18,55 +19,65 @@ } | ||
describe('Test Console Logger', function () { | ||
before(function (done) { | ||
logger.init(CONFIG) | ||
done() | ||
before(function () { | ||
Logger.init(CONFIG) | ||
}) | ||
it('- test debug method', function (done) { | ||
logger.debug('debug') | ||
done() | ||
it('- test debug method', function () { | ||
Logger.debug('debug') | ||
}) | ||
it('- test info method', function (done) { | ||
logger.info('info') | ||
done() | ||
it('- test info method', function () { | ||
Logger.info('info') | ||
}) | ||
it('- test notice method', function (done) { | ||
logger.notice('notice') | ||
done() | ||
it('- test notice method', function () { | ||
Logger.notice('notice') | ||
}) | ||
it('- test warning method', function (done) { | ||
logger.warning('warning') | ||
done() | ||
it('- test warning method', function () { | ||
Logger.warning('warning') | ||
}) | ||
it('- test error method', function (done) { | ||
logger.error('error') | ||
done() | ||
it('- test error method', function () { | ||
Logger.error('error') | ||
}) | ||
it('- test crit method', function (done) { | ||
logger.crit('crit') | ||
done() | ||
it('- test crit method', function () { | ||
Logger.crit('crit') | ||
}) | ||
it('- test alert method', function (done) { | ||
logger.alert('alert') | ||
done() | ||
it('- test alert method', function () { | ||
Logger.alert('alert') | ||
}) | ||
it('- test emerg method', function (done) { | ||
logger.emerg('emerg') | ||
done() | ||
it('- test emerg method', function () { | ||
Logger.emerg('emerg') | ||
}) | ||
it('- test emerg method', function (done) { | ||
logger.log('emerg', 'log.emerg') | ||
done() | ||
it('- test emerg method', function () { | ||
Logger.log('emerg', 'log.emerg') | ||
}) | ||
after(function (done) { | ||
done() | ||
it('- test EvalError', () => { | ||
Logger.error('Eval Error Test', new EvalError('My Eval Error')) | ||
}) | ||
it('- test SyntaxError', () => { | ||
Logger.error('Syntax Error Test', new SyntaxError('My Syntax Error')) | ||
}) | ||
it('- test RangeError', () => { | ||
Logger.error('Range Error Test', new RangeError('My Range Error')) | ||
}) | ||
it('- test ReferenceError', () => { | ||
Logger.error('Reference Error Test', new ReferenceError('My Reference Error')) | ||
}) | ||
it('- test TypeError', () => { | ||
Logger.error('Type Error Test', new TypeError('My Type Error')) | ||
}) | ||
it('- test URIError', () => { | ||
Logger.error('URI Error Test', new URIError('My URI Error')) | ||
}) | ||
}) |
/* eslint-env mocha */ | ||
'use strict' | ||
var fs = require('fs') | ||
var path = require('path') | ||
var expect = require('code').expect | ||
var logger = require('../../index') | ||
const fs = require('fs') | ||
const path = require('path') | ||
const expect = require('code').expect | ||
const Logger = require('../../index') | ||
const Levels = require('../../lib/levels') | ||
const FILENAME = path.join('file.log') | ||
@@ -14,3 +16,3 @@ | ||
file: { | ||
level: ['debug', 'info', 'notice', 'warning', 'error', 'crit', 'alert', 'emerg'], | ||
level: Levels.toArray(), | ||
options: { | ||
@@ -24,13 +26,11 @@ filename: FILENAME | ||
describe('Test File Logger', function () { | ||
before(function (done) { | ||
logger.init(CONFIG) | ||
done() | ||
before(function () { | ||
Logger.init(CONFIG) | ||
}) | ||
beforeEach(function (done) { | ||
beforeEach(function () { | ||
fs.openSync(FILENAME, 'w') | ||
done() | ||
}) | ||
it('- test debug method', function (done) { | ||
logger.debug('debug') | ||
Logger.debug('debug') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -40,3 +40,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'debug', message: 'debug'}) | ||
@@ -47,3 +46,3 @@ done() | ||
it('- test info method', function (done) { | ||
logger.info('info') | ||
Logger.info('info') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -53,3 +52,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'info', message: 'info'}) | ||
@@ -60,3 +58,3 @@ done() | ||
it('- test notice method', function (done) { | ||
logger.notice('notice') | ||
Logger.notice('notice') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -66,3 +64,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'notice', message: 'notice'}) | ||
@@ -73,3 +70,3 @@ done() | ||
it('- test warning method', function (done) { | ||
logger.warning('warning') | ||
Logger.warning('warning') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -79,3 +76,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'warning', message: 'warning'}) | ||
@@ -86,3 +82,3 @@ done() | ||
it('- test error method', function (done) { | ||
logger.error('error') | ||
Logger.error('error') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -92,3 +88,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'error', message: 'error'}) | ||
@@ -99,3 +94,3 @@ done() | ||
it('- test crit method', function (done) { | ||
logger.crit('crit') | ||
Logger.crit('crit') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -105,3 +100,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'crit', message: 'crit'}) | ||
@@ -112,3 +106,3 @@ done() | ||
it('- test alert method', function (done) { | ||
logger.alert('alert') | ||
Logger.alert('alert') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -118,3 +112,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'alert', message: 'alert'}) | ||
@@ -125,3 +118,3 @@ done() | ||
it('- test emerg method', function (done) { | ||
logger.emerg('emerg') | ||
Logger.emerg('emerg') | ||
fs.readFile(FILENAME, 'utf8', function (err, data) { | ||
@@ -131,3 +124,2 @@ expect(err).to.not.exist() | ||
data = JSON.parse(data) | ||
expect(err).to.not.exist() | ||
expect(data).to.deep.include({level: 'emerg', message: 'emerg'}) | ||
@@ -138,6 +130,5 @@ done() | ||
afterEach(function (done) { | ||
afterEach(function () { | ||
fs.unlinkSync(FILENAME) | ||
done() | ||
}) | ||
}) |
/* eslint-env mocha */ | ||
'use strict' | ||
var fs = require('fs') | ||
var path = require('path') | ||
var logger = require('../../index') | ||
const fs = require('fs') | ||
const path = require('path') | ||
const Logger = require('../../index') | ||
const Levels = require('../../lib/levels') | ||
const SYSLOG_PATH = path.join('syslog.log') | ||
@@ -13,6 +15,6 @@ | ||
syslog: { | ||
level: ['debug', 'info', 'notice', 'warning', 'error', 'crit', 'alert', 'emerg'], | ||
level: Levels.toArray(), | ||
options: { | ||
path: SYSLOG_PATH, | ||
app_name: 'c8-logger' | ||
app_name: 'c8-Logger' | ||
} | ||
@@ -24,16 +26,10 @@ } | ||
describe.skip('Test Syslog Logger', function () { | ||
before(function (done) { | ||
before(function () { | ||
fs.openSync(SYSLOG_PATH, 'w') | ||
logger.init(CONFIG) | ||
done() | ||
Logger.init(CONFIG) | ||
}) | ||
it('- test debug method', function (done) { | ||
logger.emerg('debug') | ||
done() | ||
it('- test debug method', function () { | ||
Logger.emerg('debug') | ||
}) | ||
after(function (done) { | ||
done() | ||
}) | ||
}) |
@@ -5,51 +5,44 @@ /* eslint-env mocha */ | ||
var expect = require('code').expect | ||
var baseLogger = require('../../lib/base') | ||
const Utils = require('../../lib/utils') | ||
describe('Test Logger string levels', function () { | ||
it('- debug level', function (done) { | ||
var out = baseLogger.level('debug') | ||
it('- debug level', function () { | ||
var out = Utils.level('debug') | ||
expect(out).to.be.equal(7) | ||
done() | ||
}) | ||
it('- info level', function (done) { | ||
var out = baseLogger.level('info') | ||
it('- info level', function () { | ||
var out = Utils.level('info') | ||
expect(out).to.be.equal(6) | ||
done() | ||
}) | ||
it('- notice level', function (done) { | ||
var out = baseLogger.level('notice') | ||
it('- notice level', function () { | ||
var out = Utils.level('notice') | ||
expect(out).to.be.equal(5) | ||
done() | ||
}) | ||
it('- warning level', function (done) { | ||
var out = baseLogger.level('warning') | ||
it('- warning level', function () { | ||
var out = Utils.level('warning') | ||
expect(out).to.be.equal(4) | ||
done() | ||
}) | ||
it('- error level', function (done) { | ||
var out = baseLogger.level('error') | ||
it('- error level', function () { | ||
var out = Utils.level('error') | ||
expect(out).to.be.equal(3) | ||
done() | ||
}) | ||
it('- crit level', function (done) { | ||
var out = baseLogger.level('crit') | ||
it('- crit level', function () { | ||
var out = Utils.level('crit') | ||
expect(out).to.be.equal(2) | ||
done() | ||
}) | ||
it('- alert level', function (done) { | ||
var out = baseLogger.level('alert') | ||
it('- alert level', function () { | ||
var out = Utils.level('alert') | ||
expect(out).to.be.equal(1) | ||
done() | ||
}) | ||
it('- emerg level', function (done) { | ||
var out = baseLogger.level('emerg') | ||
it('- emerg level', function () { | ||
var out = Utils.level('emerg') | ||
expect(out).to.be.equal(0) | ||
done() | ||
}) | ||
@@ -59,48 +52,40 @@ }) | ||
describe('Test Logger number levels', function () { | ||
it('- debug level', function (done) { | ||
var out = baseLogger.level(7) | ||
it('- debug level', function () { | ||
var out = Utils.level(7) | ||
expect(out).to.be.equal('debug') | ||
done() | ||
}) | ||
it('- info level', function (done) { | ||
var out = baseLogger.level(6) | ||
it('- info level', function () { | ||
var out = Utils.level(6) | ||
expect(out).to.be.equal('info') | ||
done() | ||
}) | ||
it('- notice level', function (done) { | ||
var out = baseLogger.level(5) | ||
it('- notice level', function () { | ||
var out = Utils.level(5) | ||
expect(out).to.be.equal('notice') | ||
done() | ||
}) | ||
it('- warning level', function (done) { | ||
var out = baseLogger.level(4) | ||
it('- warning level', function () { | ||
var out = Utils.level(4) | ||
expect(out).to.be.equal('warning') | ||
done() | ||
}) | ||
it('- error level', function (done) { | ||
var out = baseLogger.level(3) | ||
it('- error level', function () { | ||
var out = Utils.level(3) | ||
expect(out).to.be.equal('error') | ||
done() | ||
}) | ||
it('- crit level', function (done) { | ||
var out = baseLogger.level(2) | ||
it('- crit level', function () { | ||
var out = Utils.level(2) | ||
expect(out).to.be.equal('crit') | ||
done() | ||
}) | ||
it('- alert level', function (done) { | ||
var out = baseLogger.level(1) | ||
it('- alert level', function () { | ||
var out = Utils.level(1) | ||
expect(out).to.be.equal('alert') | ||
done() | ||
}) | ||
it('- emerg level', function (done) { | ||
var out = baseLogger.level(0) | ||
it('- emerg level', function () { | ||
var out = Utils.level(0) | ||
expect(out).to.be.equal('emerg') | ||
done() | ||
}) | ||
@@ -110,11 +95,9 @@ }) | ||
describe('Test non valid log levels', function () { | ||
it('- non valid string level', function (done) { | ||
expect(baseLogger.level.bind(baseLogger, 'badumtssss')).to.throw(Error) | ||
done() | ||
it('- non valid string level', function () { | ||
expect(Utils.level.bind(Utils, 'badumtssss')).to.throw(Error) | ||
}) | ||
it('- non valid number level', function (done) { | ||
expect(baseLogger.level.bind(baseLogger, 999999999)).to.throw(Error) | ||
done() | ||
it('- non valid number level', function () { | ||
expect(Utils.level.bind(Utils, 999999999)).to.throw(Error) | ||
}) | ||
}) |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
21192
21
590
105
1
8
4