forked from Benjamin-Dobell/ge_tts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLogger.ttslua
119 lines (99 loc) · 3.21 KB
/
Logger.ttslua
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
---@class ge_tts__Logger
---@class ge_tts__static_Logger
---@overload fun(): ge_tts__Logger
local Logger = {}
Logger.ERROR = 1
Logger.WARNING = 2
Logger.INFO = 3
Logger.DEBUG = 4
Logger.VERBOSE = 5
---@alias ge_tts__Logger_LogLevel 1 | 2 | 3 | 4 | 5
---@type table<ge_tts__Logger_LogLevel, string>
local levelPrefixes = {
[Logger.ERROR] = 'ERROR: ',
[Logger.WARNING] = 'WARNING: ',
[Logger.INFO] = '',
[Logger.DEBUG] = '',
[Logger.VERBOSE] = '',
}
---@type ge_tts__Logger_LogLevel
local defaultLogLevel = Logger.DEBUG
setmetatable(Logger, {
__call = function()
local self = --[[---@type ge_tts__Logger]] {}
---@type ge_tts__Logger_LogLevel
local filterLevel = Logger.INFO
---@return ge_tts__Logger_LogLevel
function self.getFilterLevel()
return filterLevel
end
---@param level ge_tts__Logger_LogLevel | `Logger.ERROR` | `Logger.WARNING` | `Logger.INFO` | `Logger.DEBUG` | `Logger.VERBOSE`
function self.setFilterLevel(level)
filterLevel = level
end
---@param message string
---@param level ge_tts__Logger_LogLevel | `Logger.ERROR` | `Logger.WARNING` | `Logger.INFO` | `Logger.DEBUG` | `Logger.VERBOSE`
function self.log(message, level)
level = level or defaultLogLevel
if level <= filterLevel then
print(levelPrefixes[level] .. message)
end
end
---
---If value is false, logs message at level Logger.ERROR and then calls Lua's in-built error(message).
---
---@param value any
---@param message string
function self.assert(value, message)
if not value then
self.log(message, Logger.ERROR)
error(message, 2)
end
end
return self
end
})
local defaultLogger = Logger()
---@param logger ge_tts__Logger
function Logger.setDefaultLogger(logger)
defaultLogger = logger
end
function Logger.getDefaultLogger()
return defaultLogger
end
---
---When calling log() without specifying a log level, messages will log at the provided log level.
---
---@param level ge_tts__Logger_LogLevel | `Logger.ERROR` | `Logger.WARNING` | `Logger.INFO` | `Logger.DEBUG` | `Logger.VERBOSE`
function Logger.setDefaultLogLevel(level)
defaultLogLevel = level
end
---
---Returns the default log level.
---
---@return ge_tts__Logger_LogLevel
function Logger.getDefaultLogLevel()
return defaultLogLevel
end
---
---Logs a message at the specified log level. If level is omitted, the default log level will be used.
---
---@overload fun(message: string): void
---@param message string
---@param level ge_tts__Logger_LogLevel | `Logger.ERROR` | `Logger.WARNING` | `Logger.INFO` | `Logger.DEBUG` | `Logger.VERBOSE`
function Logger.log(message, level)
level = level or defaultLogLevel
defaultLogger.log(message, level)
end
---
---If value is false, logs message at level Logger.ERROR using the default logger, and then calls Lua's error(message).
---
---@param value any
---@param message string
function Logger.assert(value, message)
if not value then
defaultLogger.log(message, Logger.ERROR)
error(message, 2)
end
end
return Logger