@@ -15,49 +15,46 @@ vlogmacrodocs = """
1515
1616"Verbose" logging macros. Drop in replacements of standard logging macros, but an
1717additional verbosity level `N` is passed to indicate differing verbosity levels
18- for a given log level. The verbosity argument is passed as the `group` argument
19- to the core logging logic, so care should be taken if other loggers are being used
20- that also use the group argument.
21- Note: by default group is passed as the source file, however it is poor practice to rely on this in the first place.
22- Instead use the file argument for that.
18+ for a given log level. The verbosity argument is subtracted from the base log level when passed down
19+ to the core logging logic, so `@debugv 1 msg` will essentially call `@logmsg Debug-1 msg`.
2320
24- An `LoggingExtras.EarlyFilteredLogger `can then be used to filter on the `group ` argument.
21+ An `LoggingExtras.LevelOverrideLogger `can then be used to filter on the `level ` argument.
2522For convenience, the
2623[`LoggintExtras.with(f; level, verbosity)`](@ref) function is provided to temporarily
27- wrap the current logger with a level/ verbosity filter while `f` is executed.
24+ wrap the current logger with a log level and verbosity subtracted to filter while `f` is executed.
2825"""
2926
3027macro debugv (verbosity:: Int , msg, exs... )
3128 return restore_callsite_source_position! (
32- esc (:($ Base. @debug $ msg _group = $ verbosity $ (exs... ))),
29+ esc (:($ Base. @logmsg (Logging . Debug - $ verbosity) $ msg $ (exs... ))),
3330 __source__,
3431 )
3532end
3633
3734macro infov (verbosity:: Int , msg, exs... )
3835 return restore_callsite_source_position! (
39- esc (:($ Base. @info $ msg _group = $ verbosity $ (exs... ))),
36+ esc (:($ Base. @logmsg (Logging . Info - $ verbosity) $ msg $ (exs... ))),
4037 __source__,
4138 )
4239end
4340
4441macro warnv (verbosity:: Int , msg, exs... )
4542 return restore_callsite_source_position! (
46- esc (:($ Base. @warn $ msg _group = $ verbosity $ (exs... ))),
43+ esc (:($ Base. @logmsg (Logging . Warn - $ verbosity) $ msg $ (exs... ))),
4744 __source__,
4845 )
4946end
5047
5148macro errorv (verbosity:: Int , msg, exs... )
5249 return restore_callsite_source_position! (
53- esc (:($ Base. @error $ msg _group = $ verbosity $ (exs... ))),
50+ esc (:($ Base. @logmsg (Logging . Error - $ verbosity) $ msg $ (exs... ))),
5451 __source__,
5552 )
5653end
5754
5855macro logmsgv (verbosity:: Int , level, msg, exs... )
5956 return restore_callsite_source_position! (
60- esc (:($ Base. @logmsg $ level $ msg _group = $ verbosity $ (exs... ))),
57+ esc (:($ Base. @logmsg ( $ level - $ verbosity) $ msg $ (exs... ))),
6158 __source__,
6259 )
6360end
6966@eval @doc $ vlogmacrodocs :(@errorv )
7067
7168"""
72- LoggingExtras.with(f; level=Info, verbosity=0 )
69+ LoggingExtras.with(f; level=Info)
7370
7471Convenience function like `Logging.with_logger` to temporarily wrap
75- the current logger with a level/verbosity filter while `f` is executed.
72+ the current logger with a level filter while `f` is executed.
7673That is, the current logger will still be used for actual logging, but
77- log messages will first be checked that they meet the `level` and
78- `verbosity` levels before being passed on to be logged.
74+ log messages will first be checked that they meet the `level`
75+ log level before being passed on to be logged.
7976"""
80- function with (f; level:: Union{Int, LogLevel} = Info, verbosity:: Int = 0 )
81- with_logger (EarlyFilteredLogger (
82- args -> ! (args. group isa Int) || verbosity >= args. group,
83- LevelOverrideLogger (level, current_logger ()))
84- ) do
85- f ()
77+ function with (f; level:: Union{Int, LogLevel} = Info, verbosity:: Integer = 0 )
78+ lvl = Base. CoreLogging. _min_enabled_level[]
79+ try
80+ # by default, this global filter is Debug, but for debug logging
81+ # we want to enable sub-Debug levels
82+ Base. CoreLogging. _min_enabled_level[] = BelowMinLevel
83+ with_logger (LevelOverrideLogger (level - verbosity, current_logger ())) do
84+ f ()
85+ end
86+ finally
87+ Base. CoreLogging. _min_enabled_level[] = lvl
8688 end
8789end
0 commit comments