View difference between Paste ID: pf3ZTA7s and dJ4MUdX1
SHOW: | | - or go back to the newest paste.
1-
logger = { }
1+
-- enum of logging levels
2
local levels = { trace = 1, debug = 2, info = 3, error = 4, fatal = 5 }
3-
levels =
3+
4-
{
4+
-- initialization
5-
  trace = 0,
5+
-- change modem's side
6-
  debug = 1,
6+
rednet.open("right")
7-
  info = 2,
7+
8-
  error = 3,
8+
-- targets for logging
9-
  fatal = 4
9+
-- you can add some things like os.time or label
10-
}
10+
local function output(logLevel, message)
11
  if logLevel >= levels.debug then
12-
-- configuring minimal level for logging
12+
    print(message)
13-
logger.minLevel = levels.trace
13+
14
15-
-- configuring message outputs (rednet/print() etc)
15+
  if logLevel >= levels.info then
16-
local function output(message)
16+
    rednet.broadcast(message)
17-
  print(message)
17+
    -- rednet.send(id, message)
18
  end
19
20-
function logger:fatal(message) 
20+
  if logLevel >= levels.trace then
21-
  if self.minLevel < 5 then 
21+
    -- writing to file
22-
    output("Fatal: "..message) 
22+
23
end
24
25
-- output message rules
26-
function logger:error(message)
26+
function fatal(message) 
27-
  if self.minLevel < 4 then
27+
  output(levels.fatal, "FATAL "..message)
28-
    output("Error: "..message)
28+
29
30
function error(message)
31
  output(levels.error, "ERROR "..message)
32-
function logger:info(message)
32+
33-
  if self.minLevel < 3 then
33+
34-
    output("Info: "..message)
34+
function info(message)
35
  output(levels.info, "INFO "..message)
36
end
37
38-
function logger:debug(message)
38+
function debug(message)
39-
  if self.minLevel < 2 then
39+
  output(levels.debug, "DEBUG "..message)
40-
    output("Debug: "..message)
40+
41
42
function trace(message)
43
  output(levels.trace, "TRACE "..message)
44-
function logger:trace(message)
44+