1 | 'use strict';
|
2 |
|
3 | var util = require('util');
|
4 | var Console = require('console').Console;
|
5 | var supportsColor = require('color-support');
|
6 |
|
7 | var console = new Console({
|
8 | stdout: process.stdout,
|
9 | stderr: process.stderr,
|
10 | colorMode: false,
|
11 | });
|
12 |
|
13 | function hasFlag(flag) {
|
14 | return process.argv.indexOf('--' + flag) !== -1;
|
15 | }
|
16 |
|
17 | function hasColors() {
|
18 | if (hasFlag('no-color')) {
|
19 | return false;
|
20 | }
|
21 |
|
22 | if (hasFlag('color')) {
|
23 | return true;
|
24 | }
|
25 |
|
26 | if (supportsColor()) {
|
27 | return true;
|
28 | }
|
29 |
|
30 | return false;
|
31 | }
|
32 |
|
33 | function Timestamp() {
|
34 | this.now = new Date();
|
35 | }
|
36 |
|
37 | Timestamp.prototype[util.inspect.custom] = function (depth, opts) {
|
38 | var timestamp = this.now.toLocaleTimeString('en', { hour12: false });
|
39 | return '[' + opts.stylize(timestamp, 'date') + ']';
|
40 | };
|
41 |
|
42 | function getTimestamp() {
|
43 | return util.inspect(new Timestamp(), { colors: hasColors() });
|
44 | }
|
45 |
|
46 | function log() {
|
47 | var time = getTimestamp();
|
48 | process.stdout.write(time + ' ');
|
49 | console.log.apply(console, arguments);
|
50 | return this;
|
51 | }
|
52 |
|
53 | function info() {
|
54 | var time = getTimestamp();
|
55 | process.stdout.write(time + ' ');
|
56 | console.info.apply(console, arguments);
|
57 | return this;
|
58 | }
|
59 |
|
60 | function dir() {
|
61 | var time = getTimestamp();
|
62 | process.stdout.write(time + ' ');
|
63 | console.dir.apply(console, arguments);
|
64 | return this;
|
65 | }
|
66 |
|
67 | function warn() {
|
68 | var time = getTimestamp();
|
69 | process.stderr.write(time + ' ');
|
70 | console.warn.apply(console, arguments);
|
71 | return this;
|
72 | }
|
73 |
|
74 | function error() {
|
75 | var time = getTimestamp();
|
76 | process.stderr.write(time + ' ');
|
77 | console.error.apply(console, arguments);
|
78 | return this;
|
79 | }
|
80 |
|
81 | module.exports = log;
|
82 | module.exports.info = info;
|
83 | module.exports.dir = dir;
|
84 | module.exports.warn = warn;
|
85 | module.exports.error = error;
|