-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.lua
More file actions
121 lines (105 loc) · 2.24 KB
/
logger.lua
File metadata and controls
121 lines (105 loc) · 2.24 KB
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
local api = {}
api.open = function(filePath)
local path = filePath
local file = fs.open(filePath,'a')
local debugEnabled = false
local isClosed = false
local timeOffset = 0
local monitor = nil
local name = nil
local function fileWrite(msg)
file.write(msg)
file.flush()
if (monitor ~= nil) then
monitor.write(msg)
end
end
local function fileWriteLine(msg)
file.writeLine(msg)
file.flush()
if (monitor ~= nil) then
monitor.write(msg..'\n')
monitor.scroll(1)
local monW,monH = monitor.getSize()
monitor.setCursorPos(1,monH)
end
end
local function writeTime()
local time = os.time('utc') + timeOffset
if (time < 0) then
time = time + 24
end
local hours = math.floor(time)
if (hours < 10) then
hours = '0'..hours
end
fileWrite('[')
fileWrite(hours)
fileWrite(':')
local mins = math.floor(60*(time - math.floor(time)))
if (mins < 10) then
mins = '0'..mins
end
fileWrite(mins)
fileWrite(']')
end
local function writeName()
if (name ~= nil) then
fileWrite('[')
fileWrite(name)
fileWrite(']')
end
end
local ret = {}
ret.info = function(msg)
if (not isClosed) then
writeTime()
writeName()
fileWrite('[INFO] ')
fileWriteLine(msg)
end
end
ret.error = function(msg)
if (not isClosed) then
writeTime()
writeName()
fileWrite('[ERROR] ')
fileWriteLine(msg)
end
end
ret.debug = function(msg)
if (not isClosed and debugEnabled) then
writeTime()
writeName()
fileWrite('[DEBUG] ')
fileWriteLine(msg)
end
end
ret.enableDebug = function()
debugEnabled = true
end
ret.setTimeOffset = function(offset)
timeOffset = offset
return ret
end
ret.setMonitor = function(mon)
monitor = mon
if (monitor ~= nil) then
local monW,monH = monitor.getSize()
monitor.setCursorPos(1,monH)
end
return ret
end
ret.setName = function(nm)
name = nm
return ret
end
ret.close = function()
file.close()
end
ret.clone = function()
return api.open(filePath).setName(name).setMonitor(monitor).setTimeOffset(timeOffset)
end
return ret
end
return api