7 个版本
0.2.3 | 2023年11月13日 |
---|---|
0.2.2 | 2022年3月17日 |
0.2.1 | 2022年2月28日 |
0.2.0 | 2021年10月23日 |
0.1.0 | 2020年5月5日 |
#33 in 调试
813,701 每月下载量
用于 408 个crates (241 直接)
1MB
13K SLoC
tracing-appender
用于记录日志事件和范围的写入器
概述
tracing
是一个用于对Rust程序进行仪表化的框架,以收集结构化、基于事件的诊断信息。 tracing-appender
允许通过专用日志线程以非阻塞方式记录事件和范围。它还提供了一个可以与或不与非阻塞写入器一起使用的 RollingFileAppender
。
编译器支持:需要 rustc
1.63+
使用方法
将以下内容添加到您的 Cargo.toml
tracing-appender = "0.2"
此crate可以通过几种方式记录跨度/事件
- 使用
RollingFileAppender
将日志写入到文件。这是一个阻塞操作。 - 使用实现
std::io::Write
的任何类型以非阻塞方式。 - 结合使用
NonBlocking
和RollingFileAppender
以非阻塞方式将日志写入到文件。
滚动文件追加器
fn main(){
let file_appender = tracing_appender::rolling::hourly("/some/directory", "prefix.log");
}
这创建了一个每小时旋转的文件追加器,将日志写入到/some/directory/prefix.log.YYYY-MM-DD-HH
。其他可用选项包括Rotation::DAILY
和Rotation::NEVER
。
文件追加器实现了std::io::Write
。要与tracing_subscriber::FmtSubscriber
一起使用,必须结合一个MakeWriter
实现来记录跟踪跨度/事件。
滚动模块的文档提供了更多关于如何使用此文件追加器的详细信息。
非阻塞写入器
以下示例演示了使用std::io::Write
实现的non_blocking
写入器的构建过程。
use std::io::Error;
struct TestWriter;
impl std::io::Write for TestWriter {
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
let buf_len = buf.len();
println!("{:?}", buf);
Ok(buf_len)
}
fn flush(&mut self) -> std::io::Result<()> {
Ok(())
}
}
fn main() {
let (non_blocking, _guard) = tracing_appender::non_blocking(TestWriter);
tracing_subscriber::fmt().with_writer(non_blocking).init();
}
注意: _guard
是WorkerGuard
,由tracing_appender::non_blocking
返回,以确保在进程突然终止的情况下,缓冲日志被刷新到输出。有关更多详细信息,请参阅WorkerGuard
模块。
以下示例演示了使用tracing_appender::non_blocking
构建的std::io::Write
。
fn main() {
let (non_blocking, _guard) = tracing_appender::non_blocking(std::io::stdout());
tracing_subscriber::fmt()
.with_writer(non_blocking)
.init();
}
非阻塞模块的文档提供了更多关于如何使用non_blocking
的详细信息。
非阻塞滚动文件追加器
fn main() {
let file_appender = tracing_appender::rolling::hourly("/some/directory", "prefix.log");
let (non_blocking, _guard) = tracing_appender::non_blocking(file_appender);
tracing_subscriber::fmt()
.with_writer(non_blocking)
.init();
}
支持的 Rust 版本
tracing-appender
基于最新的稳定版本构建。最低支持的版本是1.63。当前tracing-appender
版本在低于最低支持版本的Rust版本上构建不可保证。
跟踪遵循Tokio项目其余部分的相同的编译器支持策略。始终支持当前的稳定Rust编译器和它之前的三个最近的小版本。例如,如果当前的稳定编译器版本是1.69,最低支持的版本将不会超过1.66,即三个小版本之前。只要这样做符合此策略,增加最低支持的编译器版本不被视为semver破坏性更改。
许可证
本项目遵循MIT许可证。
贡献
除非您明确声明,否则您提交给Tokio的任何有意包含的贡献,都应按照MIT许可证许可,不附加任何额外条款或条件。
依赖关系
~1.4–6.5MB
~41K SLoC