2个版本
0.2.4 | 2024年4月17日 |
---|---|
0.2.3 | 2024年4月16日 |
174 在 调试 中
每月下载量 31次
73KB
864 行
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
实现来记录跟踪跨度/事件。
关于如何使用此文件追加器的更多详细信息,请参阅 rolling 模块的文档。
非阻塞写入器
以下示例演示了如何使用 std::io::Writer
的实现构建一个 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
是一个由 tracing_appender::non_blocking
返回的 WorkerGuard
,以确保在进程突然终止的情况下,缓冲日志被刷新到输出。有关详细信息,请参阅 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
的更多详细信息,请参阅 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 许可,不附加任何其他条款或条件。
依赖关系
~3–9MB
~72K SLoC