defmt2log 0.1.0

Adapt full defmt logging to ordinary log records
Documentation
use log::{LevelFilter, Log, Metadata, Record};

struct Logger;

static LOGGER: Logger = Logger;

impl Log for Logger {
    fn enabled(&self, _metadata: &Metadata<'_>) -> bool {
        true
    }

    fn log(&self, record: &Record<'_>) {
        eprintln!(
            "{}|{}|{}|{}|{}|{}",
            record.level(),
            record.target(),
            record.module_path().unwrap_or("<unknown>"),
            record.file().unwrap_or("<unknown>"),
            record.line().unwrap_or(0),
            record.args()
        );
    }

    fn flush(&self) {}
}

fn main() {
    log::set_logger(&LOGGER).unwrap();
    log::set_max_level(LevelFilter::Trace);

    match std::env::var_os("DEFMT2LOG_SELF_CHECK") {
        Some(path) => defmt2log::init_from_elf_path(path).unwrap(),
        None => defmt2log::init_from_current_exe().unwrap(),
    }

    defmt::println!("word {=u32:#010x}", 0x1234u32);
    defmt::trace!("foo {=str}", "foo");
    defmt::error!("bar {=u8}", 99);
}