1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use log::{LevelFilter, Log, Metadata, Record};
use sidevm_env::ocall_funcs_guest as ocall;
pub struct Logger {
max_level: LevelFilter,
}
impl Logger {
pub fn with_max_level(max_level: LevelFilter) -> Self {
Self { max_level }
}
pub fn init(self) {
log::set_max_level(self.max_level);
log::set_boxed_logger(Box::new(self)).unwrap();
}
}
impl Log for Logger {
fn enabled(&self, metadata: &Metadata) -> bool {
metadata.level() <= self.max_level
}
fn log(&self, record: &Record) {
if self.enabled(record.metadata()) {
let message = format!("{}", record.args());
let _ = ocall::log(record.level(), &message);
}
}
fn flush(&self) {}
}