-
-
Save rtgibbons/7354879 to your computer and use it in GitHub Desktop.
var app = require(process.cwd() + '/app'); | |
var winston = require('winston'); | |
var _ = require('lodash'); | |
// Set up logger | |
var customColors = { | |
trace: 'white', | |
debug: 'green', | |
info: 'green', | |
warn: 'yellow', | |
crit: 'red', | |
fatal: 'red' | |
}; | |
var logger = new(winston.Logger)({ | |
colors: customColors, | |
levels: { | |
trace: 0, | |
debug: 1, | |
info: 2, | |
warn: 3, | |
crit: 4, | |
fatal: 5 | |
}, | |
transports: [ | |
new(winston.transports.Console)({ | |
level: app.settings.logLevel, | |
colorize: true, | |
timestamp: true | |
}) | |
// new (winston.transports.File)({ filename: 'somefile.log' }) | |
] | |
}); | |
winston.addColors(customColors); | |
// Extend logger object to properly log 'Error' types | |
var origLog = logger.log; | |
logger.log = function (level, msg) { | |
var objType = Object.prototype.toString.call(msg); | |
if (objType === '[object Error]') { | |
origLog.call(logger, level, msg.toString()); | |
} else { | |
origLog.call(logger, level, msg); | |
} | |
}; | |
/* LOGGER EXAMPLES | |
app.logger.trace('testing'); | |
app.logger.debug('testing'); | |
app.logger.info('testing'); | |
app.logger.warn('testing'); | |
app.logger.crit('testing'); | |
app.logger.fatal('testing'); | |
*/ | |
module.exports = logger; |
Excellent idea. Fixed at my gist fork.
I see you bring in lodash but never use it; I'm assuming it was brought in for some other reason then forgot?
How does this wrap around the expressjs application? what file are you calling this from and how do you redirect the standard output to this library?
If you would like to add a file transport to a sub-directory, you could do the following:
var fs = require('fs');
// check if directory exist
if (!fs.existsSync('logs')) {
fs.mkdirSync('logs'); // create new directory
}
And also you don't need require('lodash')
I forked and updated it.
for me it is throwing an error saying "cannot find 'logLevel' of undefined" i.e., "app.settings" is undefined.
If this is not displaying all log levels as expected, note that Winston 2.x reversed the order of the log levels.
Fixed gist here.
I have fixed everything . check here
https://gist.github.com/vikas5914/cf568748ac89446e19ecd5e2e6900443
How to move the monkey-patch of the log function to a proper transform property, this might come in handy: winstonjs/winston#1427 (comment)
origLog.call(logger, level, msg);
will lose additional arguments to the log function.origLog.apply(logger, arguments)
works better. I also suggest using msg.stack instead of msg.toString(), but that's a preference.