This change replaces runtime `ClockId` parameters with distinct types to ensure correct clock usage at compile time.
40 lines
1.0 KiB
Rust
40 lines
1.0 KiB
Rust
// SPDX-FileCopyrightText: 2022-Present Nils Andreas Svee mailto:contact@lochnair.net (github @Lochnair)
|
|
//
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
use log::{Level, Metadata, Record, SetLoggerError};
|
|
|
|
use crate::time::{ClockSample, Realtime};
|
|
|
|
#[derive(Clone, Copy)]
|
|
pub struct SimpleLogger {
|
|
pub level: Level,
|
|
}
|
|
|
|
impl log::Log for SimpleLogger {
|
|
fn enabled(&self, metadata: &Metadata) -> bool {
|
|
metadata.level() <= self.level
|
|
}
|
|
|
|
fn log(&self, record: &Record) {
|
|
if self.enabled(record.metadata()) {
|
|
let now = ClockSample::<Realtime>::now();
|
|
println!(
|
|
"{} {:5} {}:{}: {}",
|
|
now.as_secs_f64(),
|
|
record.level(),
|
|
record.file().unwrap(),
|
|
record.line().unwrap(),
|
|
record.args()
|
|
);
|
|
}
|
|
}
|
|
|
|
fn flush(&self) {}
|
|
}
|
|
|
|
pub fn init(level: Level) -> Result<(), SetLoggerError> {
|
|
log::set_boxed_logger(Box::new(SimpleLogger { level }))
|
|
.map(|()| log::set_max_level(level.to_level_filter()))
|
|
}
|