1
// This file will not be overwritten if codegen is rerun
2

            
3
use log::LevelFilter;
4

            
5
#[cfg(feature = "sel4")]
6
use sel4::debug_print;
7

            
8
#[cfg(feature = "sel4")]
9
use sel4_logging::{Logger, LoggerBuilder};
10

            
11
#[cfg(test)]
12
use std::sync::Once;
13

            
14
const LOG_LEVEL: LevelFilter = {
15
  // LevelFilter::Off // lowest level of logging
16
  // LevelFilter::Error
17
  // LevelFilter::Warn
18
  // LevelFilter::Info
19
  // LevelFilter::Debug
20
  LevelFilter::Trace // highest level of logging
21
};
22

            
23
#[cfg(feature = "sel4")]
24
pub static LOGGER: Logger = LoggerBuilder::const_default()
25
    .level_filter(LOG_LEVEL)
26
    .write(|s| debug_print!("{}", s))
27
    .build();
28

            
29
#[cfg(test)]
30
static INIT: Once = Once::new();
31

            
32
526
pub fn init_logging() {
33
526
    #[cfg(all(feature = "sel4", not(test)))]
34
526
    {
35
526
        LOGGER.set().unwrap();
36
526
    }
37
526

            
38
526
    #[cfg(test)]
39
526
    {
40
526
        INIT.call_once(|| {
41
2
            let _ = env_logger::builder()
42
2
                .is_test(cfg!(test))
43
2
                .filter_level(LOG_LEVEL)
44
2
                .try_init();
45
2
        });
46
    }
47
526
}