forked from zbirenbaum/copilot.lua
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.lua
More file actions
47 lines (42 loc) · 1.77 KB
/
logger.lua
File metadata and controls
47 lines (42 loc) · 1.77 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
---@class (exact) LoggerConfig
---@field file string Path to the log file
---@field file_log_level integer Log level for the log file, matches vim.log.levels
---@field print_log_level integer Log level for printing to the console, matches vim.log.levels
---@field trace_lsp string Trace level for LSP messages, current does not seem to do anything
---@field trace_lsp_progress boolean Whether to show LSP progress messages
---@field log_lsp_messages boolean Whether to log LSP messages
local logger = {
---@type LoggerConfig
default = {
file = vim.fn.stdpath("log") .. "/copilot-lua.log",
file_log_level = vim.log.levels.OFF,
print_log_level = vim.log.levels.WARN,
trace_lsp = "off",
trace_lsp_progress = false,
log_lsp_messages = false,
},
}
local function validate_log_level(level)
return type(level) == "number"
and (
level == vim.log.levels.OFF
or level == vim.log.levels.ERROR
or level == vim.log.levels.WARN
or level == vim.log.levels.INFO
or level == vim.log.levels.DEBUG
or level == vim.log.levels.TRACE
)
end
---@param config LoggerConfig
function logger.validate(config)
vim.validate("file", config.file, "string")
config.file = vim.fs.normalize(config.file)
vim.validate("file_log_level", config.file_log_level, validate_log_level, false, "any of the vim.log.levels")
vim.validate("print_log_level", config.print_log_level, validate_log_level, false, "any of the vim.log.levels")
vim.validate("trace_lsp", config.trace_lsp, function(level)
return level == "off" or level == "verbose" or level == "debug"
end, false, "off, verbose or debug")
vim.validate("trace_lsp_progress", config.trace_lsp_progress, "boolean")
vim.validate("log_lsp_messages", config.log_lsp_messages, "boolean")
end
return logger