-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.coffee
41 lines (29 loc) · 1 KB
/
index.coffee
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
"use strict"
module.exports = class Logger extends require "amo.modules.base"
constructor: (@_reporter = {}) ->
super()
Logger.defaultLogger = Logger.create()
Logger.logDecolator = (func) ->
type = "[#{func.toUpperCase()}]"
return ->
dt = new Date Date.now()
@_reporter[func]?(
type
dt.toJSON()
"::"
arguments...
)
for func in ["log", "debug", "info", "warn", "error"]
Logger.prototype[func] = Logger.logDecolator func
Logger.simpleDecolator = (func) -> ->
@_reporter[func]? arguments...
for func in ["assert", "clear", "dir", "dirxml", "table", "trace", "count"]
Logger.prototype[func] = Logger.simpleDecolator func
Logger.groupDecolator = (func, funcEnd = "#{func}End") -> (name, block) ->
@_reporter[func]? name
result = block()
@_reporter[funcEnd]? name
return result
for func in ["group", "time", "profile"]
Logger.prototype[func] = Logger.groupDecolator func
Logger.prototype.groupCollapsed = Logger.groupDecolator "groupCollapsed", "groupEnd"