@@ -219,7 +219,7 @@ function emit_message(message::String, verbose::V,
219219 level = message_level (verbose, option, group)
220220
221221 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
223223 end
224224end
225225
@@ -257,3 +257,39 @@ macro SciMLMessage(f_or_message, verb, option, group)
257257 $ (esc (f_or_message)), $ (esc (verb)), $ option, $ group, $ file, $ line, $ _module))
258258end
259259
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