aboutsummaryrefslogtreecommitdiff
path: root/src/log.moon
blob: cadfaec0140673797b9b6b285a6522f1607b8741 (plain)
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
-- Singleton object to deal with log messages
class log
	log: (message, tags, level) ->
		tags = tags or {}
		if not level
			error("Level is required")
		tag_rev = {tag,true for tag in *tags}
		chunk =
			level: level
			time: os.clock!
			message: message
			tags: tag_rev 
		for observer in *log.observers
			observer(chunk)
	
	reset: ->
		log.observers = {}
	debug: (message, tags) ->
		--log.log(message, tags, "debug")
	info: (message, tags) ->
		log.log(message, tags, "info")
	warn: (message, tags) ->
		log.log(message, tags, "warn")
	error: (message, tags) ->
		log.log(message, tags, "error")
		-- We can't call error() here, see preload.lua
	panic: (message, tags) ->
		log.log(message, tags, "panic")
		-- Can't call error() here either.
	listen: (callback) ->
		table.insert(log.observers, callback)
		#log.observers
	defen: (n) ->
		table.remove(log.observers, n)

log.reset()
log