#跟踪 #日志 #systemd #日志记录 #后端

logcontrol-tracing

日志控制接口的跟踪后端

2个不稳定版本

0.2.0 2023年9月30日
0.1.0 2023年9月30日

#827调试

每月35次下载

MIT/Apache

37KB
362

logcontrol-tracing

Crates.io docs.rs

tracinglogcontrol接口的实现。

使用方法

$ cargo add logcontrol-tracing
use logcontrol::*;
use logcontrol_tracing::*;
use tracing_subscriber::prelude::*;

let (control, layer) = TracingLogControl1::new_auto(
    PrettyLogControl1LayerFactory,
    tracing::Level::INFO,
).unwrap();

let subscriber = tracing_subscriber::Registry::default().with(layer);
tracing::subscriber::set_global_default(subscriber).unwrap();
// Then register `control` over DBus, e.g. via `logcontrol_zbus::LogControl1`.

lib.rs:

LogControl1tracing的实现。

TracingLogControl1在跟踪之上提供了一个LogControl1实现,使用reload layer在日志目标或日志级别通过日志控制接口改变时动态切换层和级别过滤器。

它使用LogControl1LayerFactory实现来创建日志目标层,每次更改日志目标时。这个crate提供了一个默认的PrettyLogControl1LayerFactory,它使用tracing_subscriber的格式化输出到控制台目标和tracing_journald。您可以提供自己的实现来自定义每个目标层。

当创建TracingLogControl1时,还会返回一个需要添加到全局跟踪订阅者中(即tracing_subscriber::Registry),以便日志控制有任何效果。

use logcontrol::*;
use logcontrol_tracing::*;
use tracing_subscriber::prelude::*;

let (control, layer) = TracingLogControl1::new_auto(
    PrettyLogControl1LayerFactory,
    tracing::Level::INFO,
).unwrap();

let subscriber = tracing_subscriber::Registry::default().with(layer);
tracing::subscriber::set_global_default(subscriber).unwrap();
// Then register `control` over DBus, e.g. via `logcontrol_zbus::LogControl1`.

依赖关系

~7MB
~117K SLoC