#logging #log #log-format #format #no-std

no-std l0g

为无_std库设计的具有偏见的日志门面

1个稳定版本

1.0.0 2024年3月21日

#1228嵌入式开发

Download history 1/week @ 2024-05-07 13/week @ 2024-05-14 64/week @ 2024-05-21 113/week @ 2024-05-28 212/week @ 2024-06-04 186/week @ 2024-06-11 113/week @ 2024-06-18 119/week @ 2024-06-25 53/week @ 2024-07-02 20/week @ 2024-07-16 1/week @ 2024-07-23 81/week @ 2024-07-30

102 每月下载次数

MIT 许可证

8KB
135

l0g

为无_std库设计的具有偏见的日志门面,有时也可在std环境中使用。

概述

日志设施因环境而异,尤其是在no_stdstd之间。此门面允许将选择使用哪个日志实现的决策委托给顶层应用程序。

l0g::{error,warn,info,debug,trace}的任何调用

  • 在未设置任何功能时变为空操作
  • log::{error,warn,info,debug,trace}来自log crate当设置了log功能
  • defmt::{error,warn,info,debug,trace}来自defmt crate当设置了defmt功能

此外,还提供了proc-macro来泛化使用哪种格式化实现

#[l0g::format]
struct MyStruct {
    value: u8
}

变为

#[derive(core::fmt::Debug)]
struct MyStruct {
    value: u8
}

如果使用log功能或

#[derive(defmt::Format)]
struct MyStruct {
    value: u8
}

如果使用defmt功能。

这允许{:?}格式化工作,无论选择哪种日志实现。

用法

在你的库的Cargo.toml中只需说

l0g = "1"

no_std顶层应用程序中指定具有defmt功能的依赖项。有关如何使defmt工作,请参阅其相应的文档。

l0g = { version = "1", features = ["defmt"] }

在std顶级应用程序中,使用log功能指定依赖。关于如何使log工作,请查阅其相应文档。

l0g = { version = "1", features = ["log"] }

依赖项

~0.3–0.8MB
~19K SLoC