1 | var emojis = {
|
2 | debug: '🐛',
|
3 | info: '✨',
|
4 | warn: '⚠️',
|
5 | error: '🚨',
|
6 | fatal: '💀'
|
7 | }
|
8 |
|
9 | var levels = {
|
10 | debug: 20,
|
11 | info: 30,
|
12 | warn: 40,
|
13 | error: 50,
|
14 | fatal: 60
|
15 | }
|
16 |
|
17 | var colors = {
|
18 | foreground: '#d3c0c8',
|
19 | background: '#2d2d2d',
|
20 | black: '#2d2d2d',
|
21 | red: '#f2777a',
|
22 | green: '#99cc99',
|
23 | yellow: '#ffcc66',
|
24 | blue: '#6699cc',
|
25 | magenta: '#cc99cc',
|
26 | cyan: '#66cccc',
|
27 | white: '#d3d0c8',
|
28 | brightBlack: '#747369'
|
29 | }
|
30 |
|
31 | module.exports = Nanologger
|
32 |
|
33 | function Nanologger (name) {
|
34 | if (!(this instanceof Nanologger)) return new Nanologger(name)
|
35 | this._name = name || ''
|
36 | this.logLevel = window.localStorage.getItem('logLevel') || 'info'
|
37 | this._logLevel = levels[this.logLevel]
|
38 | }
|
39 |
|
40 | Nanologger.prototype.debug = function (data) {
|
41 | this._print('debug', data)
|
42 | }
|
43 |
|
44 | Nanologger.prototype.info = function (data) {
|
45 | this._print('info', data)
|
46 | }
|
47 |
|
48 | Nanologger.prototype.warn = function (data) {
|
49 | this._print('warn', data)
|
50 | }
|
51 |
|
52 | Nanologger.prototype.error = function (data) {
|
53 | this._print('error', data)
|
54 | }
|
55 |
|
56 | Nanologger.prototype.fatal = function (data) {
|
57 | this._print('fatal', data)
|
58 | }
|
59 |
|
60 | Nanologger.prototype._print = function (level, data) {
|
61 | var time = this._getTimeStamp()
|
62 | var emoji = emojis[level]
|
63 | var name = this._name || 'unknown'
|
64 | var c = this._c
|
65 |
|
66 | var msgColor = (level === 'error' || level.fatal)
|
67 | ? colors.red
|
68 | : (level === 'warn')
|
69 | ? colors.yellow
|
70 | : colors.green
|
71 |
|
72 | var msg = '%c' + time + ' ' + emoji + ' %c' + name + ' %c' + data
|
73 | console.log(msg, c(colors.brightBlack), c(colors.magenta), c(msgColor))
|
74 | }
|
75 |
|
76 | Nanologger.prototype._c = function (color) {
|
77 | return 'color: ' + color + ';'
|
78 | }
|
79 |
|
80 | Nanologger.prototype._getTimeStamp = function () {
|
81 | var date = new Date()
|
82 | var hours = this._pad(date.getHours().toString())
|
83 | var minutes = this._pad(date.getMinutes().toString())
|
84 | var seconds = this._pad(date.getSeconds().toString())
|
85 | return hours + ':' + minutes + ':' + seconds
|
86 | }
|
87 |
|
88 | Nanologger.prototype._pad = function (str) {
|
89 | return (str.length !== 2) ? '0' + str : str
|
90 | }
|