Skip to content

Commit e8f782c

Browse files
Merge pull request #454 from devmotion/loggingextras
Do respect existing loggers
2 parents 7a5b5cf + 3636806 commit e8f782c

File tree

4 files changed

+36
-15
lines changed

4 files changed

+36
-15
lines changed

Project.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@ version = "6.19.0"
66
[deps]
77
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
88
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
9+
ConsoleProgressMonitor = "88cd18e8-d9cc-4ea6-8889-5259c0d15c8b"
910
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
1011
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
1112
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
1213
FunctionWrappers = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e"
1314
IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153"
1415
IteratorInterfaceExtensions = "82899510-4779-5014-852e-03e436cf321d"
15-
Juno = "e5e0dc1b-0480-54bc-9374-aad01c23163d"
1616
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1717
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
18+
LoggingExtras = "e6f89c97-d47a-5376-807f-9c37f3926c36"
1819
MuladdMacro = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221"
1920
Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a"
2021
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
22+
ProgressLogging = "33c8b6b6-d38a-422a-b730-caa89a2f386c"
2123
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
2224
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
2325
RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4"
@@ -35,14 +37,16 @@ ZygoteRules = "700de1a5-db45-46bc-99cf-38207098b444"
3537
[compat]
3638
ArrayInterface = "1.1, 2.0"
3739
ChainRulesCore = "0.4, 0.5, 0.6, 0.7"
40+
ConsoleProgressMonitor = "0.1"
3841
DataStructures = "0.17"
3942
DocStringExtensions = "0.8"
4043
FunctionWrappers = "1.0"
4144
IterativeSolvers = "0.8"
4245
IteratorInterfaceExtensions = "^0.1, ^1"
43-
Juno = "0.8"
46+
LoggingExtras = "0.4"
4447
MuladdMacro = "0.2.1"
4548
Parameters = "0.12.0"
49+
ProgressLogging = "0.1"
4650
RecipesBase = "0.7.0, 0.8"
4751
RecursiveArrayTools = "2"
4852
RecursiveFactorization = "0.1"

src/DiffEqBase.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ module DiffEqBase
33
using RecipesBase, RecursiveArrayTools,
44
Requires, TableTraits, IteratorInterfaceExtensions, TreeViews,
55
IterativeSolvers, RecursiveFactorization, Distributed, ArrayInterface,
6-
DataStructures, Logging, TerminalLoggers, Juno
6+
DataStructures
7+
8+
import Logging, LoggingExtras, TerminalLoggers, ConsoleProgressMonitor, ProgressLogging
79

810
import ZygoteRules, ChainRulesCore
911

src/solve.jl

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,20 @@ function init(prob::DEProblem,args...;kwargs...)
3333
end
3434
end
3535

36-
function solve_call(_prob,args...;merge_callbacks = true,
37-
logger = default_logger(),
38-
kwargs...)
36+
function solve_call(_prob,args...;merge_callbacks = true, kwargs...)
3937
if :kwargs propertynames(_prob)
4038
if merge_callbacks && haskey(_prob.kwargs,:callback) && haskey(kwargs, :callback)
4139
kwargs_temp = NamedTuple{Base.diff_names(Base._nt_names(
4240
values(kwargs)), (:callback,))}(values(kwargs))
4341
callbacks = NamedTuple{(:callback,)}( [DiffEqBase.CallbackSet(_prob.kwargs.callback, values(kwargs).callback )] )
4442
kwargs = merge(kwargs_temp, callbacks)
4543
end
46-
maybe_with_logger(logger) do
47-
__solve(_prob,args...;_prob.kwargs...,kwargs...)
48-
end
49-
else
50-
maybe_with_logger(logger) do
51-
__solve(_prob,args...;kwargs...)
52-
end
44+
kwargs = merge(_prob.kwargs, kwargs)
45+
end
46+
47+
logger = get(kwargs, :progress, false) ? default_logger(Logging.current_logger()) : nothing
48+
maybe_with_logger(logger) do
49+
__solve(_prob,args...; kwargs...)
5350
end
5451
end
5552

src/utils.jl

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,5 +256,23 @@ timedepentdtmin(integrator::DEIntegrator) = timedepentdtmin(integrator.t, integr
256256
timedepentdtmin(t::AbstractFloat, dtmin) = abs(max(eps(t), dtmin))
257257
timedepentdtmin(::Any, dtmin) = abs(dtmin)
258258

259-
maybe_with_logger(f, logger) = logger === nothing ? f() : with_logger(f, logger)
260-
default_logger() = Juno.isactive() ? nothing : TerminalLogger()
259+
maybe_with_logger(f, logger) = logger === nothing ? f() : Logging.with_logger(f, logger)
260+
261+
function default_logger(logger)
262+
Logging.min_enabled_level(logger) ProgressLogging.ProgressLevel && return nothing
263+
264+
if Sys.iswindows() || (isdefined(Main, :IJulia) && Main.IJulia.inited)
265+
progresslogger = ConsoleProgressMonitor.ProgressLogger()
266+
else
267+
progresslogger = TerminalLoggers.TerminalLogger()
268+
end
269+
270+
logger1 = LoggingExtras.EarlyFilteredLogger(progresslogger) do log
271+
log.level == ProgressLogging.ProgressLevel
272+
end
273+
logger2 = LoggingExtras.EarlyFilteredLogger(logger) do log
274+
log.level != ProgressLogging.ProgressLevel
275+
end
276+
277+
LoggingExtras.TeeLogger(logger1, logger2)
278+
end

0 commit comments

Comments
 (0)