5 stable releases
3.0.1 | Feb 3, 2025 |
---|---|
3.0.0 | Nov 1, 2024 |
2.0.0 | Feb 13, 2024 |
1.1.0 | Sep 30, 2023 |
1.0.0 | Sep 30, 2023 |
#550 in Debugging
310 downloads per month
32KB
257 lines
logcontrol-zbus
zbus
DBus frontend for the logcontrol interface.
Usage
$ cargo add logcontrol-zbus
use logcontrol_zbus::ConnectionBuilderExt;
#[async_std::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Use an implementation such as logcontrol-tracing
let control = create_log_control();
let _conn = zbus::ConnectionBuilder::session()?
.name("de.swsnr.logcontrol.SimpleServerExample")?
.serve_log_control(logcontrol_zbus::LogControl1::new(control))?
.build()
.await?;
// Do other things or go to wait forever
std::future::pending::<()>().await;
Ok(())
}
lib.rs
:
A logcontrol::LogControl1
frontend with zbus
.
LogControl1
provides the D-Bus interface implementation. It receives the
underlying logcontrol::LogControl1
as sole argument and exposes it
over D-Bus, as a standard zbus D-Bus interface:
use logcontrol_zbus::{LogControl1, ConnectionBuilderExt};
#[async_std::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let control = create_log_control();
let _conn = zbus::ConnectionBuilder::session()?
.name("de.swsnr.logcontrol.SimpleServerExample")?
.serve_log_control(LogControl1::new(control))?
.build()
.await?;
// Do other things or go to wait forever
std::future::pending::<()>().await;
Ok(())
}
Note that for systemctl
to find the log control interface with
systemctl service-log-level
and systemctl service-log-target
you need
to make sure that
- the interface is registered under
logcontrol::DBUS_OBJ_PATH
, and - the unit file provides the claimed bus name in the
BusName
attribute.
Otherwise systemd will not be able to change the log level or target.
Dependencies
~8–17MB
~272K SLoC