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 调试
每月178次下载
在 4 crate 中使用
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