architect-winston-logger
Advanced tools
Comparing version 0.2.1 to 1.0.0
33
index.js
@@ -7,2 +7,3 @@ 'use strict'; | ||
var upperCaseFirst = require('upper-case-first'); | ||
var camelCase = require('camel-case'); | ||
@@ -66,3 +67,3 @@ module.exports = function setup(options, imports, register) { | ||
transport = new (winston.transports[transportNameUC])(transports[transportName]); | ||
transport = new(winston.transports[transportNameUC])(transports[transportName]); | ||
result.push(transport); | ||
@@ -80,11 +81,37 @@ } | ||
LoggerFactory.prototype.create = function (category, label, transports) { | ||
var transportOptions = merge(true, this.defaultTransports); | ||
var factory = this; | ||
var transportOptions = merge(true, this.defaultTransports), | ||
logger; | ||
if (!category) { | ||
throw new Error('Must provide a category for new logger creation as first argument'); | ||
} | ||
transportOptions = merge(transportOptions, transports); | ||
this.container.add(category, addLabel(transportOptions, label)); | ||
return this.container.get(category); | ||
logger = this.container.get(category); | ||
logger.label = label; | ||
logger.category = category; | ||
logger.destroy = function () { | ||
factory.container.close(category); | ||
}; | ||
logger.createChild = function (label) { | ||
var category = camelCase(this.category + label); | ||
return factory.create(category, this.label + ':' + label); | ||
}; | ||
return logger; | ||
}; | ||
LoggerFactory.prototype.destroy = function (category) { | ||
if (!category) { | ||
throw new Error('Must provide a category for new logger creation as first argument'); | ||
} | ||
return this.container.close(category); | ||
}; | ||
LoggerFactory.prototype.get = function (category) { | ||
@@ -91,0 +118,0 @@ return this.container.get(category); |
{ | ||
"name": "architect-winston-logger", | ||
"version": "0.2.1", | ||
"version": "1.0.0", | ||
"description": "Wrapper for winston to use architect", | ||
"main": "index.js", | ||
"dependencies": { | ||
"camel-case": "^1.2.2", | ||
"load-grunt-tasks": "^3.4.0", | ||
@@ -8,0 +9,0 @@ "merge": "^1.2.0", |
# architect-winston-logger | ||
Wrapper for using winston as an architect plugin | ||
Prerequisites | ||
---- | ||
* Include this package as an architect plugin in your application. | ||
* Inject `loggerFactory` by declaring it in the `consumes` array of one of your plugins | ||
Usage | ||
``` | ||
module.exports = function (options, imports) { | ||
var loggerA = imports.loggerFactory.create('loggerA', 'task1'); | ||
loggerA.log('info', 'Something wrong'); | ||
// info: [task1] Something wrong | ||
var loggerB = loggerA.createChild('subtask2'); | ||
loggerB.log('info', 'Something else'); | ||
// info: [task1:subtask2] Something else | ||
loggerB.destroy(); | ||
}; | ||
``` |
@@ -73,3 +73,3 @@ 'use strict'; | ||
}); | ||
it('uses respects specified additional transports', function (done) { | ||
it('respects specified additional transports', function (done) { | ||
require('./../index.js')(pluginMeta, {}, function (err, services) { | ||
@@ -89,2 +89,37 @@ var logger1 = services.loggerFactory.create('something', 'something-prefix', { | ||
}); | ||
it('chains onto prefix', function (done) { | ||
require('./../index.js')(pluginMeta, {}, function (err, services) { | ||
var logger1 = services.loggerFactory.create('someLogger', 'prefix1'); | ||
var logger2 = logger1.createChild('prefix2'); | ||
for (var transport in logger2.transports) { | ||
assert(logger2.transports[transport].label === 'prefix1:prefix2', 'Prefix chained to parent'); | ||
} | ||
done(); | ||
}); | ||
}); | ||
it('removes specified container', function (done) { | ||
require('./../index.js')(pluginMeta, {}, function (err, services) { | ||
var logger1 = services.loggerFactory.create('something', 'something-prefix', { | ||
file: { | ||
filename: 'somefile.log' | ||
} | ||
}); | ||
assert(logger1.destroy instanceof Function, 'Logger exposes destroy method'); | ||
assert(services.loggerContainer.loggers.something, 'Logger exists before destroyed'); | ||
logger1.destroy(); | ||
services.loggerFactory.create('something2', 'something-prefix2', { | ||
file: { | ||
filename: 'somefile.log' | ||
} | ||
}); | ||
assert(services.loggerContainer.loggers.something2, 'Logger exists before destroyed'); | ||
services.loggerFactory.destroy('something2'); | ||
assert(!services.loggerContainer.loggers.something2, 'Logger destroyed'); | ||
done(); | ||
}); | ||
}); | ||
}); |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
15551
288
1
31
5
+ Addedcamel-case@^1.2.2
+ Addedcamel-case@1.2.2(transitive)
+ Addedlower-case@1.1.4(transitive)
+ Addedsentence-case@1.1.3(transitive)