@@ -219,7 +219,7 @@ function emit_message(message::String, verbose::V,
219
219
level = message_level (verbose, option, group)
220
220
221
221
if ! isnothing (level)
222
- Base. @logmsg level message _file= file _line= line _module= _module
222
+ Base. @logmsg level message _file= file _line= line _module= _module _group = group
223
223
end
224
224
end
225
225
@@ -257,3 +257,39 @@ macro SciMLMessage(f_or_message, verb, option, group)
257
257
$ (esc (f_or_message)), $ (esc (verb)), $ option, $ group, $ file, $ line, $ _module))
258
258
end
259
259
260
+ function SciMLLogger (; info_repl = true , warn_repl = true , error_repl = true ,
261
+ info_file = nothing , warn_file = nothing , error_file = nothing )
262
+ info_sink = isnothing (info_file) ? NullLogger () : FileLogger (info_file)
263
+ warn_sink = isnothing (warn_file) ? NullLogger () : FileLogger (warn_file)
264
+ error_sink = isnothing (error_file) ? NullLogger () : FileLogger (error_file)
265
+
266
+ repl_filter = EarlyFilteredLogger (current_logger ()) do log
267
+ if log. level == Logging. Info && info_repl
268
+ return true
269
+ end
270
+
271
+ if log. level == Logging. Warn && warn_repl
272
+ return true
273
+ end
274
+
275
+ if log. level == Logging. Error && error_repl
276
+ return true
277
+ end
278
+
279
+ return false
280
+ end
281
+
282
+ info_filter = EarlyFilteredLogger (info_sink) do log
283
+ log. level == Logging. Info
284
+ end
285
+
286
+ warn_filter = EarlyFilteredLogger (warn_sink) do log
287
+ log. level == Logging. Warn
288
+ end
289
+
290
+ error_filter = EarlyFilteredLogger (error_sink) do log
291
+ log. level == Logging. Error
292
+ end
293
+
294
+ TeeLogger (repl_filter, info_filter, warn_filter, error_filter)
295
+ end
0 commit comments