Conversion Utilities

SciMLLogging provides utility functions to convert message levels to common formats used by other packages.

Integer Conversion

SciMLLogging.verbosity_to_intFunction
    `verbosity_to_int(verb::AbstractMessageLevel)`

Takes a `AbstractMessageLevel` and gives a corresponding integer value.
Verbosity settings that use integers or enums that hold integers are relatively common.
This provides an interface so that these packages can be used with SciMLVerbosity. Each of the basic verbosity levels
are mapped to an integer.

```julia

using SciMLLogging

# Standard levels

verbosity_to_int(Silent())        # Returns 0
verbosity_to_int(DebugLevel())    # Returns 1
verbosity_to_int(InfoLevel())     # Returns 2
verbosity_to_int(WarnLevel())     # Returns 3
verbosity_to_int(ErrorLevel())    # Returns 4

# Custom levels

verbosity_to_int(CustomLevel(10)) # Returns 10
verbosity_to_int(CustomLevel(-5)) # Returns -5
```
source

Boolean Conversion

SciMLLogging.verbosity_to_boolFunction
    `verbosity_to_bool(verb::AbstractMessageLevel)`
    
Takes a `AbstractMessageLevel` and gives a corresponding boolean value.
Verbosity settings that use booleans are relatively common.
This provides an interface so that these packages can be used with SciMLVerbosity.
If the verbosity is `Silent`, then `false` is returned. Otherwise, `true` is returned.

```julia
using SciMLLogging

# Silent returns false
verbosity_to_bool(Silent())        # Returns false

# All other levels return true
verbosity_to_bool(InfoLevel())     # Returns true
verbosity_to_bool(WarnLevel())     # Returns true
verbosity_to_bool(ErrorLevel())    # Returns true
verbosity_to_bool(CustomLevel(5))  # Returns true
```
source

Usage Examples

Integrating with Integer-Based Packages

# Package that expects integer verbosity levels
function external_solver(problem; verbosity_level = 0)
    if verbosity_level >= 1
        println("Starting solver...")
    end
    # ...
end

# Use with SciMLLogging
verbose_spec = MyPackageVerbosity(Standard())
level = verbosity_to_int(verbose_spec.progress)
result = external_solver(problem, verbosity_level = level)

Integrating with Boolean-Based Packages

# Package that expects boolean verbosity
function simple_algorithm(data; verbose = false)
    if verbose
        println("Processing data...")
    end
    # ...
end

# Use with SciMLLogging
verbose_spec = MyPackageVerbosity(Standard())
is_verbose = verbosity_to_bool(verbose_spec.progress)
result = simple_algorithm(data, verbose = is_verbose)