1 | 'use strict';
|
2 |
|
3 | var log = console.log;
|
4 | var error = console.error;
|
5 | var inspect = require('util').inspect;
|
6 | var extend = require('util')._extend;
|
7 | var map = Array.prototype.map;
|
8 | var config = { depth: 1, colors: true };
|
9 |
|
10 | function setConfig(newConfig) {
|
11 | extend(config, newConfig);
|
12 | return betterLog;
|
13 | }
|
14 |
|
15 | function beautifyArgs(maybeFormat) {
|
16 | var formats = [];
|
17 | var args = new Array(arguments.length);
|
18 | var i = 0;
|
19 | if (typeof maybeFormat === 'string' && args.length > 1) {
|
20 | formats.push('%s');
|
21 | args[i++] = maybeFormat.replace(/%[sdj]/g, function (format) {
|
22 | formats.push(format);
|
23 | return '%s';
|
24 | });
|
25 | }
|
26 | while (i < args.length) {
|
27 | var arg = arguments[i];
|
28 | var format = i < formats.length ? formats[i] : '%?';
|
29 | if (format === '%s' || format === '%?' && typeof arg === 'string') {
|
30 | arg = String(arg);
|
31 | } else {
|
32 | if (format === '%d') {
|
33 | arg = Number(arg);
|
34 | }
|
35 | arg = inspect(arg, config);
|
36 | }
|
37 | args[i++] = arg;
|
38 | }
|
39 | return args;
|
40 | }
|
41 |
|
42 | function betterLog() {
|
43 | return log.apply(console, beautifyArgs.apply(undefined, arguments));
|
44 | }
|
45 |
|
46 | function betterError() {
|
47 | return error.apply(console, beautifyArgs.apply(undefined, arguments));
|
48 | }
|
49 |
|
50 | betterLog.error = betterError;
|
51 |
|
52 | betterLog.setConfig = setConfig;
|
53 |
|
54 | betterLog.install = function (newConfig) {
|
55 | setConfig(newConfig);
|
56 | console.error = console.warn = betterError;
|
57 | return console.log = console.info = betterLog;
|
58 | };
|
59 |
|
60 | betterLog.uninstall = function () {
|
61 | return console.log = log;
|
62 | };
|
63 |
|
64 | module.exports = betterLog; |
\ | No newline at end of file |