@@ -49,6 +49,73 @@ function Log:setup()
49
49
return nil
50
50
end
51
51
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
+ },
52
119
qvim = {
53
120
pipelines = {
54
121
{
@@ -122,17 +189,18 @@ end
122
189
--- @param level integer [same as vim.log.levels]
123
190
--- @param msg any
124
191
--- @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"
126
194
if
127
195
not pcall (function ()
128
- local logger = self :get_logger ()
196
+ local logger = self :get_logger (pipeline )
129
197
if not logger then
130
198
return
131
199
end
132
200
logger :log (level , vim .inspect (msg ), event )
133
201
end )
134
202
then
135
- vim .notify (msg , level , { title = " qvim " })
203
+ vim .notify (msg , level , { title = pipeline })
136
204
end
137
205
end
138
206
@@ -151,50 +219,67 @@ end
151
219
152
220
--- Retrieves the path of the logfile
153
221
--- @param variant string | nil
222
+ --- @param pipeline string | nil
154
223
--- @return string path of the logfile
155
- function Log :get_path (variant )
224
+ function Log :get_path (variant , pipeline )
156
225
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
163
243
end
164
244
165
245
--- Add a log entry at TRACE level
166
246
--- @param msg any
167
247
--- @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 )
170
251
end
171
252
172
253
--- Add a log entry at DEBUG level
173
254
--- @param msg any
174
255
--- @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 )
177
259
end
178
260
179
261
--- Add a log entry at INFO level
180
262
--- @param msg any
181
263
--- @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 )
184
267
end
185
268
186
269
--- Add a log entry at WARN level
187
270
--- @param msg any
188
271
--- @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 )
191
275
end
192
276
193
277
--- Add a log entry at ERROR level
194
278
--- @param msg any
195
279
--- @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 )
198
283
end
199
284
200
285
return setmetatable (Log , Log_mt )
0 commit comments