1.1.4 • Published 10 years ago
yanlog v1.1.4
yanlog
Wrapper of winston for easy configuration. Inspired by debug and logback
Installation
$ npm install yanlog
Usage
With yanlog
you simply invoke the exported function to generate your logger function, passing it a name which will determine the winston wrapper that is returned.
On first invoke, yanlog is going to load the first yanlog.js in app path.
if yanlog's config file is find, every 30s yanlog is watching if the file change and reconfigure yanlog
Example app.js:
var log = require('yanlog')('http')
, http = require('http')
, name = 'My App';
// fake app
log.info('booting %s', name);
http.createServer(function(req, res){
log.info(req.method + ' ' + req.url);
res.end('hello\n');
}).listen(3000, function(){
log.error('listening');
});
// fake worker of some kind
require('./worker');
Example worker.js:
var log = require('yanlog')('worker');
setInterval(function(){
log.debug('doing some work');
}, 1000);
Example yanlog.js:
module.exports = {
"options": {
"enableWatch": true
},
"configuration": {
"appender": {
"name": "console",
"transports": [{
"module": "Console",
"options": {
"colorize": true,
"timestamp": true
}
}]
},
"logger": [{
"name": "http",
"level": "warn",
"appender-ref": "console"
}],
"root": {
"level": "info",
"appender-ref": "console"
}
}
}
yanlog.js structure
Options - Optional
enableWatch
: enable watching file - default: true
Configuration
appender (array or object) - Required
Appender defined all winston logger of your application.
appender object:
name
: name of appender - Requiredtransports
: list of transports (or object) of appender - Required
module
: name of module. yanlog tests if module exists in winston.transport else it will be imported. list of available transport - Requiredsubmodule
: submodule (example: "MongoDB" for mongodb-transport) - Optionaloptions
: options of module - Optional
logger (array or object)
Logger defined all active loggers
logger object:
name
: namespace. The character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with different logger, you may simply do `connect:` - Requiredlevel
: level of logger - Optionnal (Default: info)appender-ref
: reference to appender - Required
root - Optional
Default logger if no logger matches the current namespace
root object:
level
: level of logger - Optionnal (Default: info)appender-ref
: reference to appender - Required
default root
function getDefaultRootLogger() {
return logger = new(winston.Logger)({
transports: [
new(winston.transports.Console)({
level: 'info',
timestamp: true,
colorize: true
}),
]
});
}
roadmap
- add compatibility with yaml and .properties
- config file testing in order to generate error logs
Change log
Authors
License
The MIT License