var express = require('express'); var http = require('http'); var yargs = require('yargs'); var argv = yargs.argv; var log = {}; var Color = { DEFAULT:0, BLACK:1, RED:2, GREEN:3, YELLOW:4, BLUE:5, MAGENTA:6, CYAN:7, ORANGE:8 } function getColorCode(c) { switch (c) { case Color.DEFAULT: return '\u001b[0m'; case Color.BLACK: return '\u001b[30m'; case Color.RED: return '\u001b[31m'; case Color.GREEN: return '\u001b[32m'; case Color.YELLOW: return '\u001b[33m'; case Color.BLUE: return '\u001b[34m'; case Color.MAGENTA: return '\u001b[35m'; case Color.CYAN: return '\u001b[36m'; case Color.ORANGE: return '\u001b[38;5;202m'; } } var isDev = require('express')().get('env') === 'development'; var write; if (argv.nolisten || argv.n) { write = function(elt, color) { } } else if (isDev) { write = function(elt, color) { console.log(getColorCode(color) + elt + getColorCode(Color.DEFAULT)); } } else { write = function(elt, color) { console.log(elt); } } log.ready = function(msg) { write('[RDY] ' + new Date() + ' ' + msg, Color.GREEN); } log.request = function(req, res, time) { if (req.headers['x-forwarded-for'] !== undefined || isDev) { var isStatic = req.url.substr(0, 7) === '/static' || req.url === '/favicon.ico'; write( '[REQ] ' + new Date() + ' ' + (req.headers['x-forwarded-for'] || req.connection.remoteAddress) + (time !== undefined ? (' in ' + (" " + time).slice(-6) + ' ms') : '') + ' : ' + (isStatic && req.url !== '/favicon.ico' ? '/static' + req.url : req.url), isStatic ? Color.YELLOW : Color.CYAN ); } } log.socket = {}; log.socket.connection = function(socket, isTest) { write( '[SOK] ' + new Date() + ' ' + (socket.handshake.headers['x-forwarded-for'] || socket.handshake.address) + (isTest ? ' test' : '') + ' connection', Color.MAGENTA ); } log.socket.disconnect = function(socket, isTest) { write( '[SOK] ' + new Date() + ' ' + (socket.handshake.headers['x-forwarded-for'] || socket.handshake.address) + (isTest ? ' test' : '') + ' disconnect', Color.MAGENTA ); } log.dberror = function(error) { write( '[DBE] ' + new Date() + ' ' + error, Color.RED ); } log.prefetcherror = function(error) { write( '[PFE] ' + new Date() + ' ' + error, Color.RED ); } log.mailerror = function(error) { write( '[MLE] ' + new Date() + ' ' + error, Color.RED ); } log.debug = function(info, force) { if (isDev || force === true) { write( '[DBG] ' + (info !== undefined ? info : ''), Color.YELLOW ); } } log.pugerror = function(error) { write( '[PER] ' + new Date() + ' ' + error, Color.RED ); } log.warning = function(message) { write( '[WRN] ' + new Date() + ' ' + message, Color.ORANGE ); } log.faceerror = function(message) { write( '[FER] ' + new Date() + ' ' + message, Color.RED ); } module.exports = log;