8个版本

新增 0.1.7 2024年8月21日
0.1.6 2024年8月10日
0.1.5 2024年7月19日
0.1.4 2024年6月13日
0.1.0 2024年3月15日

#856 in 调试

Download history 290/week @ 2024-04-29 20/week @ 2024-05-06 2/week @ 2024-05-13 22/week @ 2024-05-20 12/week @ 2024-05-27 10/week @ 2024-06-03 121/week @ 2024-06-10 23/week @ 2024-06-17 4/week @ 2024-06-24 26/week @ 2024-07-01 2/week @ 2024-07-08 140/week @ 2024-07-15 4/week @ 2024-07-22 21/week @ 2024-07-29 109/week @ 2024-08-05 38/week @ 2024-08-12

每月178次下载
4 crate 中使用

Apache-2.0

135KB
3.5K SLoC

跟踪crate

提供日志记录、指标、内存和性能分析

在提供高可见性的同时,对执行关键路径的影响最小,tracing专注于为高性能应用提供可预测的性能。它最初是为视频游戏引擎设计的。

与其他跟踪crate不同,tracing不提供单个事件的钩子,而是一个事件流,在内部利用transit将事件序列化为二进制格式。旨在在进程后期消费,但也可以有效地通过网络发送。

示例

use micromegas_tracing::{
   span_scope, info, warn, error, debug, imetric, fmetric, guards, event,
};

// Initialize tracing, here with a null event sink, see `lgn-telemetry-sink` crate for a proper implementation
// libraries don't need (and should not) setup any TracingSystemGuard
let _tracing_guard = guards::TracingSystemGuard::new(
    8 * 1024 * 1024,
    1024 * 1024,
    16 * 1024 * 1024,
    std::sync::Arc::new(event::NullEventSink {})
);
let _thread_guard = guards::TracingThreadGuard::new();

// Create a span scope, this will complete when the scope is dropped, and provide the time spent in the scope
// Behind the scene this uses a thread local storage
// on an i9-11950H this takes around 40ns
span_scope!("main");

// Logging
info!("Hello world");
warn!("Hello world");
error!("Hello world");
debug!("Hello world");

// Metrics
imetric!("name", "unit", 0);
fmetric!("name", "unit", 0.0);

依赖项

~2.4–3.5MB
~64K SLoC