#logging #once #macro #events #helper #message #set

log-once

仅记录某些事件一次的辅助宏集合

8 个版本

0.4.1 2024 年 1 月 4 日
0.4.0 2022 年 9 月 10 日
0.3.1 2019 年 10 月 13 日
0.3.0 2018 年 12 月 11 日
0.1.0 2016 年 11 月 25 日

#112数据结构

Download history 6729/week @ 2024-03-14 4807/week @ 2024-03-21 4174/week @ 2024-03-28 6083/week @ 2024-04-04 10205/week @ 2024-04-11 8689/week @ 2024-04-18 8450/week @ 2024-04-25 8210/week @ 2024-05-02 9096/week @ 2024-05-09 10146/week @ 2024-05-16 10052/week @ 2024-05-23 8184/week @ 2024-05-30 8031/week @ 2024-06-06 9141/week @ 2024-06-13 10930/week @ 2024-06-20 9870/week @ 2024-06-27

39,604 每月下载量
用于 62 个 crate (3 直接)

MIT/Apache

13KB
125

log-once

Tests Documentation Crates.io version

仅记录某些事件一次的辅助宏集合。

此 crate 提供 log_once 系列宏(warn_once!trace_once! 等);对于每个消息只发送一次日志事件。它依赖并使用 log crate 中的日志基础设施;并且与任何日志实现完全兼容。

这些宏将已看到的消息存储在 BTreeSet 中,并在发送日志事件之前检查消息是否在该集中。

用法

  1. 将其添加到您的 Cargo.toml 文件中
[dependencies]
log-once = "0.4"
  1. 导入宏
use log_once::{warn_once, log_once};
  1. 享受吧!

示例

use log::info;
use log_once::{info_once, warn_once};

pub fn shave_the_yak(yaks: &[Yak]) {
    for yak in yaks {
        info!(target: "yak_events", "Commencing yak shaving for {yak:?}");

        loop {
            match find_a_razor() {
                Ok(razor) => {
                    // This will only appear once in the logger output for each razor
                    info_once!("Razor located: {razor}");
                    yak.shave(razor);
                    break;
                }
                Err(err) => {
                    // This will only appear once in the logger output for each error
                    warn_once!("Unable to locate a razor: {err}, retrying");
                }
            }
        }
    }
}

许可证

log-once 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。

请参阅 LICENSE-APACHELICENSE-MIT 以获取详细信息。

依赖关系

~87KB