Skip to content

Commit 878f57f

Browse files
committed
feat(#14): added lsp factory
1 parent abd8a1c commit 878f57f

File tree

1 file changed

+105
-20
lines changed

1 file changed

+105
-20
lines changed

lua/qvim/log.lua

+105-20
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,73 @@ function Log:setup()
4949
return nil
5050
end
5151
structlog.configure({
52+
lsp = {
53+
pipelines = {
54+
{
55+
level = structlog.level.INFO,
56+
processors = {
57+
structlog.processors.StackWriter(
58+
{ "line", "file" },
59+
{ max_parents = 0, stack_level = 0 }
60+
),
61+
structlog.processors.Timestamper("%H:%M:%S"),
62+
},
63+
formatter = structlog.formatters.FormatColorizer( --
64+
"%s [%s] %s: %-30s",
65+
{ "timestamp", "level", "logger_name", "msg" },
66+
{
67+
level = structlog.formatters.FormatColorizer.color_level(),
68+
}
69+
),
70+
sink = structlog.sinks.Console(),
71+
},
72+
{
73+
level = structlog.level.ERROR,
74+
processors = {
75+
structlog.processors.StackWriter(
76+
{ "line", "file" },
77+
{ max_parents = 3 }
78+
),
79+
structlog.processors.Timestamper("%H:%M:%S"),
80+
},
81+
formatter = structlog.formatters.Format( --
82+
"%s [%s] %s: %-30s",
83+
{ "timestamp", "level", "logger_name", "msg" }
84+
),
85+
sink = structlog.sinks.File(self:get_path("error", "lsp")),
86+
},
87+
{
88+
level = structlog.level.DEBUG,
89+
processors = {
90+
structlog.processors.StackWriter(
91+
{ "line", "file" },
92+
{ max_parents = 3 }
93+
),
94+
structlog.processors.Timestamper("%H:%M:%S"),
95+
},
96+
formatter = structlog.formatters.Format( --
97+
"%s [%s] %s: %-30s",
98+
{ "timestamp", "level", "logger_name", "msg" }
99+
),
100+
sink = structlog.sinks.File(self:get_path("debug", "lsp")),
101+
},
102+
{
103+
level = structlog.level.TRACE,
104+
processors = {
105+
structlog.processors.StackWriter(
106+
{ "line", "file" },
107+
{ max_parents = 3 }
108+
),
109+
structlog.processors.Timestamper("%H:%M:%S"),
110+
},
111+
formatter = structlog.formatters.Format( --
112+
"%s [%s] %s: %-30s",
113+
{ "timestamp", "level", "logger_name", "msg" }
114+
),
115+
sink = structlog.sinks.File(self:get_path("trace", "lsp")),
116+
},
117+
},
118+
},
52119
qvim = {
53120
pipelines = {
54121
{
@@ -122,17 +189,18 @@ end
122189
---@param level integer [same as vim.log.levels]
123190
---@param msg any
124191
---@param event any
125-
function Log:add_entry(level, msg, event)
192+
function Log:add_entry(level, msg, event, pipeline)
193+
pipeline = pipeline or "qvim"
126194
if
127195
not pcall(function()
128-
local logger = self:get_logger()
196+
local logger = self:get_logger(pipeline)
129197
if not logger then
130198
return
131199
end
132200
logger:log(level, vim.inspect(msg), event)
133201
end)
134202
then
135-
vim.notify(msg, level, { title = "qvim" })
203+
vim.notify(msg, level, { title = pipeline })
136204
end
137205
end
138206

@@ -151,50 +219,67 @@ end
151219

152220
---Retrieves the path of the logfile
153221
---@param variant string|nil
222+
---@param pipeline string|nil
154223
---@return string path of the logfile
155-
function Log:get_path(variant)
224+
function Log:get_path(variant, pipeline)
156225
variant = variant or ""
157-
return string.format(
158-
"%s/%s-%s.log",
159-
get_qvim_log_dir(),
160-
variant:lower(),
161-
"qvim"
162-
)
226+
pipeline = pipeline or "qvim"
227+
228+
if pipeline == "qvim" then
229+
return string.format(
230+
"%s/%s-%s.log",
231+
get_qvim_log_dir(),
232+
"qvim",
233+
variant:lower()
234+
)
235+
else
236+
return string.format(
237+
"%s/%s/%s.log",
238+
get_qvim_log_dir(),
239+
pipeline,
240+
variant:lower()
241+
)
242+
end
163243
end
164244

165245
---Add a log entry at TRACE level
166246
---@param msg any
167247
---@param event any
168-
function Log:trace(msg, event)
169-
Log:add_entry(self.levels.TRACE, msg, event)
248+
---@param pipeline string|nil
249+
function Log:trace(msg, event, pipeline)
250+
Log:add_entry(self.levels.TRACE, msg, event, pipeline)
170251
end
171252

172253
---Add a log entry at DEBUG level
173254
---@param msg any
174255
---@param event any
175-
function Log:debug(msg, event)
176-
Log:add_entry(self.levels.DEBUG, msg, event)
256+
---@param pipeline string|nil
257+
function Log:debug(msg, event, pipeline)
258+
Log:add_entry(self.levels.DEBUG, msg, event, pipeline)
177259
end
178260

179261
---Add a log entry at INFO level
180262
---@param msg any
181263
---@param event any
182-
function Log:info(msg, event)
183-
Log:add_entry(self.levels.INFO, msg, event)
264+
---@param pipeline string|nil
265+
function Log:info(msg, event, pipeline)
266+
Log:add_entry(self.levels.INFO, msg, event, pipeline)
184267
end
185268

186269
---Add a log entry at WARN level
187270
---@param msg any
188271
---@param event any
189-
function Log:warn(msg, event)
190-
Log:add_entry(self.levels.WARN, msg, event)
272+
---@param pipeline string|nil
273+
function Log:warn(msg, event, pipeline)
274+
Log:add_entry(self.levels.WARN, msg, event, pipeline)
191275
end
192276

193277
---Add a log entry at ERROR level
194278
---@param msg any
195279
---@param event any
196-
function Log:error(msg, event)
197-
Log:add_entry(self.levels.ERROR, msg, event)
280+
---@param pipeline string|nil
281+
function Log:error(msg, event, pipeline)
282+
Log:add_entry(self.levels.ERROR, msg, event, pipeline)
198283
end
199284

200285
return setmetatable(Log, Log_mt)

0 commit comments

Comments
 (0)