58 lines
1.5 KiB
Lua
58 lines
1.5 KiB
Lua
|
local logger = {}
|
||
|
logger.init = function(monitor_wrap, scale)
|
||
|
local self = {}
|
||
|
|
||
|
local monitor = monitor_wrap or peripheral.find("monitor")
|
||
|
if not monitor then
|
||
|
monitor = term
|
||
|
else monitor.setTextScale(scale or 0.5)
|
||
|
end
|
||
|
local log_colours = {
|
||
|
['log'] = colours.white,
|
||
|
['info'] = colours.lightBlue,
|
||
|
['warn'] = colours.yellow,
|
||
|
['err'] = colours.red,
|
||
|
['success'] = colours.lime
|
||
|
}
|
||
|
|
||
|
local function move_line()
|
||
|
monitor.setCursorPos(1, select(2, monitor.getCursorPos()) + 1)
|
||
|
if select(2, monitor.getCursorPos()) >= select(2, monitor.getSize()) then
|
||
|
monitor.scroll(1)
|
||
|
monitor.setCursorPos(1, select(2, monitor.getCursorPos()) - 1)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function write_msg(message, msg_colour)
|
||
|
local time_str = os.date('%Y-%b-%d %H:%M:%S')
|
||
|
local msg_formatted = "[" .. time_str .. "] " .. message
|
||
|
|
||
|
monitor.setTextColour(msg_colour)
|
||
|
monitor.write(msg_formatted)
|
||
|
move_line()
|
||
|
end
|
||
|
|
||
|
function self.log(msg)
|
||
|
write_msg(msg, log_colours['log'])
|
||
|
end
|
||
|
|
||
|
function self.info(msg)
|
||
|
write_msg('INFO: ' .. msg, log_colours['info'])
|
||
|
end
|
||
|
|
||
|
function self.warning(msg)
|
||
|
write_msg('WARNING: ' .. msg, log_colours['warn'])
|
||
|
end
|
||
|
|
||
|
function self.error(msg)
|
||
|
write_msg('ERROR: ' .. msg, log_colours['err'])
|
||
|
end
|
||
|
|
||
|
function self.success(msg)
|
||
|
write_msg('SUCCESS: ' .. msg, log_colours['success'])
|
||
|
end
|
||
|
|
||
|
return self
|
||
|
end
|
||
|
|
||
|
return logger
|