aboutsummaryrefslogtreecommitdiff
path: root/src/log.moon
diff options
context:
space:
mode:
Diffstat (limited to 'src/log.moon')
-rw-r--r--src/log.moon37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/log.moon b/src/log.moon
new file mode 100644
index 0000000..cadfaec
--- /dev/null
+++ b/src/log.moon
@@ -0,0 +1,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