forked from mirrors/Scribe.js
56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
/* jshint -W098 */
|
|
(function () {
|
|
|
|
var colorsjs = require('colors/safe'),
|
|
Console2 = require('./console2');
|
|
|
|
/**
|
|
* logger
|
|
*
|
|
* @param {Console2|undefined} console
|
|
* @param {Function|undefined} validate
|
|
*/
|
|
var logger = function (console, validate) {
|
|
|
|
if (!(console instanceof Console2)) {
|
|
|
|
if (!(process.console instanceof Console2)) {
|
|
throw new Error("No process.console");
|
|
} else {
|
|
console = process.console;
|
|
}
|
|
}
|
|
|
|
if (console.info === undefined) {
|
|
throw new Error("No 'info' logger attach to console");
|
|
}
|
|
|
|
return function (req, res, next) {
|
|
|
|
if (!validate || validate(req, res)) {
|
|
|
|
console
|
|
.time()
|
|
.tag(
|
|
{msg : 'Express', colors : 'cyan'},
|
|
{msg : req.ip, colors : 'red'},
|
|
{msg : req.method, colors : 'green'},
|
|
{
|
|
msg : (/mobile/i.test(req.headers['user-agent']) ? 'MOBILE' : 'DESKTOP'),
|
|
colors : 'grey'
|
|
}
|
|
)
|
|
.info(req.url);
|
|
}
|
|
|
|
next();
|
|
};
|
|
|
|
};
|
|
|
|
module.exports = {
|
|
|
|
logger : logger
|
|
|
|
};
|
|
}());
|