-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.js
89 lines (79 loc) · 1.98 KB
/
logger.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
Author: Stanislav Venzerul
License: MIT
Date: Nov 30th, 2013
*/
var util = require('util'),
colors = require('colors'),
_ = require('underscore'),
moment = require('moment');
var config = {
timestampShow: true,
timestampFormat: 'MMM DD YYYY, HH:mm:ss'
};
var ppConfig = {
showHidden: false,
depth: null,
colors: true,
debug: true
};
var prettyPrint = function (obj, options) {
options = options || {};
_.defaults(options, ppConfig);
if (!options.debug) return;
console.log(util.inspect(obj, options));
};
var json = function(obj, indent, replacer) {
/*jshint shadow:true*/
var indent = indent || 2;
console.log(JSON.stringify(obj, replacer, indent));
};
var formatJSON = function(obj, indent, replacer) {
/*jshint shadow:true*/
var indent = indent || 2;
return JSON.stringify(obj, replacer, indent);
};
var logWithColor = function(msg, color) {
// We instantiate a string in case null or undefined was passed in.
if (_.isUndefined(msg) || _.isNull(msg)) msg = String(msg);
var out = msg[color];
if (config.timestampShow) {
out = [moment().format(config.timestampFormat), out].join(' - ');
}
console.log(out);
};
var warn = function(msg) {
logWithColor(msg, 'yellow');
};
var error = function(msg) {
logWithColor(msg, 'red');
};
var success = function(msg) {
logWithColor(msg, 'green');
};
var info = function(msg) {
logWithColor(msg, 'cyan');
};
function configure() {
var key, value;
key = _.first(arguments);
value = _.last(arguments);
if (!arguments.length) {
return config;
}
if (_.isObject(key)) {
config = key;
} else {
config[key] = value;
}
}
module.exports.log = prettyPrint; //alias for backward compat.
module.exports.prettyPrint = prettyPrint;
module.exports.pp = prettyPrint; //alias
module.exports.error = error;
module.exports.success = success;
module.exports.info = info;
module.exports.warn = warn;
module.exports.configure = configure;
module.exports.json = json;
module.exports.formatJSON = formatJSON;