2 个稳定版本
1.0.1 | 2023 年 9 月 30 日 |
---|
#585 在 调试
每月 23 次下载
用于 3 crates
19KB
136 行
logcontrol.rs
systemd 的 logcontrol 接口的类型和实现。
此接口提供在运行时通过 D-Bus 或使用 systemctl service-log-level
或 systemctl service-log-target
改变系统服务的日志行为的方法。
此仓库提供了一组基本类型和此接口的实现
logcontrol
包含基本类型并为接口定义了一个抽象特质。logcontrol-tracing
为tracing
库提供了 logcontrol 后端实现。logcontrol-zbus
为zbus
DBus 框架提供了 DBus 接口实现。
用法
$ cargo add logcontrol-tracing
$ cargo add logcontrol-zbus
use std::error::Error;
use std::time::Duration;
use logcontrol_tracing::{PrettyLogControl1LayerFactory, TracingLogControl1};
use tracing::{event, Level};
use tracing_subscriber::prelude::*;
use tracing_subscriber::Registry;
use zbus::ConnectionBuilder;
#[async_std::main]
async fn main() -> Result<(), Box<dyn Error>> {
let (control, control_layer) =
TracingLogControl1::new_auto(PrettyLogControl1LayerFactory, Level::INFO)?;
let subscriber = Registry::default().with(control_layer);
tracing::subscriber::set_global_default(subscriber).unwrap();
let _conn = ConnectionBuilder::session()?
.name("com.example.Foo")?
.serve_at(
logcontrol::DBUS_OBJ_PATH,
logcontrol_zbus::LogControl1::new(control),
)?
.build()
.await?;
loop {
async_std::task::sleep(Duration::from_secs(5)).await;
event!(Level::INFO, "An message at info level");
async_std::task::sleep(Duration::from_secs(1)).await;
event!(Level::WARN, "An message at warning level");
}
}
有关更完整的示例,请参阅 tracing-server.rs。
依赖项
~310–780KB
~18K SLoC