Macro woodpecker::wp_set_level [] [src]

macro_rules! wp_set_level {
    ($level:expr, $logger:expr, [$(($from:expr, $to:expr)),*]) => { ... };
    ($level:expr, $logger:expr, $lranges:expr) => { ... };
    ($level:expr, $logger:expr) => { ... };
    (spec($spec:expr)) => { ... };
    ($level:expr) => { ... };
}

Sets the log level.

Sets global log level if called without the arguments or according to the specified path otherwise.

Optionally the ranges of the lines within the file could be given. In this case the full path to the file must be provided.

The logger spec might also be either env_logger spec or a JSON string which defines global and per-module log level.

See documentation of the spec module for the details.

See documentation for the wp_get_level for more details on the log level hierarchy.

Example

#[macro_use]
extern crate woodpecker;
use woodpecker as wp;

fn main() {
    wp_init!();

    let logger = "foo::bar";

    wp_set_level!(wp::LogLevel::INFO).unwrap();
    wp_set_level!(wp::LogLevel::CRITICAL, logger).unwrap();

    assert_eq!(wp_get_level!(^), wp::LogLevel::INFO);
    assert_eq!(wp_get_level!(), wp::LogLevel::INFO);
    assert_eq!(wp_get_level!(logger), wp::LogLevel::CRITICAL);

    wp_set_level!(wp::LogLevel::WARN, this_file!(), [(line!() + 2, wp::EOF)]).unwrap();
    assert_eq!(wp_get_level!(), wp::LogLevel::INFO);
    assert_eq!(wp_get_level!(), wp::LogLevel::WARN);

    wp_set_level!(wp::LogLevel::CRITICAL, this_file!()).unwrap();
    let ranges = vec![(wp::BOF.into(), line!() + 2), (line!() + 4, wp::EOF.into())];
    wp_set_level!(wp::LogLevel::WARN, this_file!(), ranges).unwrap();
    assert_eq!(wp_get_level!(), wp::LogLevel::WARN);
    assert_eq!(wp_get_level!(), wp::LogLevel::CRITICAL);
    assert_eq!(wp_get_level!(), wp::LogLevel::WARN);

    wp_set_level!(wp::LogLevel::TRACE, this_file!(), [(wp::BOF, wp::EOF)]).unwrap();
    assert_eq!(wp_get_level!(), wp::LogLevel::TRACE);

    let spec = format!(r#"{{
                    "level": "debug",
                    "modules": [
                        {{
                            "path": "foo"
                        }},
                        {{
                            "path": "{}",
                            "level": "notice"
                        }},
                        {{
                            "path": "{}",
                            "level": "critical",
                            "lines": [[{}, {}]]
                        }}
                    ]
                }}"#,
            this_file!(), this_file!(), line!() + 4, line!() + 100);
    wp_set_level!(spec(&spec)).unwrap();
    assert_eq!(wp_get_level!(^), wp::LogLevel::DEBUG);
    assert_eq!(wp_get_level!(), wp::LogLevel::NOTICE);
    assert_eq!(wp_get_level!("foo"), wp::LogLevel::TRACE);
    assert_eq!(wp_get_level!(), wp::LogLevel::CRITICAL);

    let spec = format!("critical,{},foo=info", this_file!());
    wp_set_level!(spec(&spec)).unwrap();
    assert_eq!(wp_get_level!(^), wp::LogLevel::CRITICAL);
    assert_eq!(wp_get_level!(), wp::LogLevel::TRACE);
    assert_eq!(wp_get_level!("foo"), wp::LogLevel::INFO);
}