UNPKG

2 kBJavaScriptView Raw
1var emojis = {
2 debug: '🐛',
3 info: '✨',
4 warn: '⚠️',
5 error: '🚨',
6 fatal: '💀'
7}
8
9var levels = {
10 debug: 20,
11 info: 30,
12 warn: 40,
13 error: 50,
14 fatal: 60
15}
16
17var 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
31module.exports = Nanologger
32
33function 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
40Nanologger.prototype.debug = function (data) {
41 this._print('debug', data)
42}
43
44Nanologger.prototype.info = function (data) {
45 this._print('info', data)
46}
47
48Nanologger.prototype.warn = function (data) {
49 this._print('warn', data)
50}
51
52Nanologger.prototype.error = function (data) {
53 this._print('error', data)
54}
55
56Nanologger.prototype.fatal = function (data) {
57 this._print('fatal', data)
58}
59
60Nanologger.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
76Nanologger.prototype._c = function (color) {
77 return 'color: ' + color + ';'
78}
79
80Nanologger.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
88Nanologger.prototype._pad = function (str) {
89 return (str.length !== 2) ? '0' + str : str
90}