1- function restore_callsite_source_position! (expr, src)
1+ function restore_callsite_source_position! (m, expr, src)
22 @assert expr. head == :escape
33 @assert expr. args[1 ]. head == :macrocall
44 @assert expr. args[1 ]. args[2 ] isa LineNumberNode
@@ -7,7 +7,15 @@ function restore_callsite_source_position!(expr, src)
77 # Logging.jl macros; otherwise, they would always report this (verbosity.jl)
88 # file as the logging callsite
99 expr. args[1 ]. args[2 ] = src
10- return expr
10+ ex = quote
11+ LoggingExtras. deprecate_verbosity ($ (Meta. quot (m)))
12+ $ expr
13+ end
14+ return ex
15+ end
16+
17+ function deprecate_verbosity (m)
18+ Base. depwarn (" Verbosity logging macros are deprecated as they are not compatible with juliac-compiled programs" , m)
1119end
1220
1321vlogmacrodocs = """
3442
3543" $vlogmacrodocs "
3644macro debugv (verbosity:: Int , msg, exs... )
37- return restore_callsite_source_position! (
45+ return restore_callsite_source_position! (:debugv ,
3846 esc (:($ Base. @debug $ msg _group= $ (Verbosity (verbosity)) $ (exs... ))),
3947 __source__,
4048 )
4149end
4250
4351" $vlogmacrodocs "
4452macro infov (verbosity:: Int , msg, exs... )
45- return restore_callsite_source_position! (
53+ return restore_callsite_source_position! (:infov ,
4654 esc (:($ Base. @info $ msg _group= $ (Verbosity (verbosity)) $ (exs... ))),
4755 __source__,
4856 )
4957end
5058
5159" $vlogmacrodocs "
5260macro warnv (verbosity:: Int , msg, exs... )
53- return restore_callsite_source_position! (
61+ return restore_callsite_source_position! (:warnv ,
5462 esc (:($ Base. @warn $ msg _group= $ (Verbosity (verbosity)) $ (exs... ))),
5563 __source__,
5664 )
5765end
5866
5967" $vlogmacrodocs "
6068macro errorv (verbosity:: Int , msg, exs... )
61- return restore_callsite_source_position! (
69+ return restore_callsite_source_position! (:errorv ,
6270 esc (:($ Base. @error $ msg _group= $ (Verbosity (verbosity)) $ (exs... ))),
6371 __source__,
6472 )
6573end
6674
6775" $vlogmacrodocs "
6876macro logmsgv (verbosity:: Int , level, msg, exs... )
69- return restore_callsite_source_position! (
77+ return restore_callsite_source_position! (:logmsgv ,
7078 esc (:($ Base. @logmsg $ level $ msg _group= $ (Verbosity (verbosity)) $ (exs... ))),
7179 __source__,
7280 )
7381end
7482
7583"""
76- LoggingExtras.withlevel(f, level; verbosity::Integer=0)
84+ LoggingExtras.withlevel(f, level; verbosity::Integer=0, group::Union{Symbol, Nothing}=nothing )
7785
7886Convenience function like `Logging.with_logger` to temporarily wrap
7987the current logger with a level filter while `f` is executed.
8088That is, the current logger will still be used for actual logging, but
8189log messages will first be checked that they meet the `level`
8290log level before being passed on to be logged.
8391
84- For convenience, a `verbosity` keyword argument can be passed which also
85- filters the "verbose logging" messages; see [`@debugv`](@ref), [`@infov`](@ref),
86- [`@warnv`](@ref), [`@errorv`](@ref), and [`@logmsgv`](@ref).
92+ For convenience, a `group` keyword argument can be passed which also
93+ filters logging messages on the "group". By default, the group is the
94+ file name of the log macro call site, but can be overridden by passing
95+ the `_group` keyword argument to the logging macros.
8796
8897!!! note
8998
@@ -95,11 +104,24 @@ filters the "verbose logging" messages; see [`@debugv`](@ref), [`@infov`](@ref),
95104 For more control directly construct the logger you want by making use of
96105 [`LevelOverrideLogger`](@ref) and then use `with_logger` to make it active.
97106"""
98- function withlevel (f, level:: Union{Int, LogLevel} = Info; verbosity:: Integer = 0 )
99- with_logger (EarlyFilteredLogger (
100- args -> ! (args. group isa Verbosity) || verbosity >= args. group. verbosity,
101- propagate_level_override (level, current_logger ()))
102- ) do
103- f ()
107+ function withlevel (f, level:: Union{Int, LogLevel} = Info; verbosity:: Integer = 0 , group:: Union{Symbol, Nothing} = nothing )
108+ if verbosity > 0
109+ deprecate_verbosity (:withlevel )
110+ end
111+ verbosity > 0 && group != = nothing && throw (ArgumentError (" Cannot specify both verbosity and group" ))
112+ if group === nothing
113+ with_logger (EarlyFilteredLogger (
114+ args -> ! (args. group isa Verbosity) || verbosity >= args. group. verbosity,
115+ propagate_level_override (level, current_logger ()))
116+ ) do
117+ f ()
118+ end
119+ else
120+ with_logger (EarlyFilteredLogger (
121+ args -> args. group === group,
122+ propagate_level_override (level, current_logger ())
123+ )) do
124+ f ()
125+ end
104126 end
105127end
0 commit comments