1 个不稳定版本

0.1.0 2024 年 3 月 5 日

Unix API 中排名第 550

MIT 和可能 AGPL-3.0-or-later

21KB
438 行代码(不包括注释)

tracing-systemd:具有(一些)格式的 journald 日志记录

在这里放置一些内容,以便仓库看起来不那么空旷

运行示例

cargorun --exampletest_log_stdout --功能="colored"

cargorun --exampletest_log_systemd --功能="colored"


lib.rs:

tracing-subscriber 层,用于将日志记录到 systemd 日志

tracing-subscriber 提供了一个可配置的 SystemdLayer 实现。显示所有跨度(span)和参数。

功能

  • colored(默认):启用彩色输出
  • sd-journal:启用向 systemd 日志记录日志(在服务外运行时很有用)
    • 需要安装 libsystemd-dev
    • 使用 -t | --identifier 进行过滤(例如,journalctl -t <identifier>

示例

use tracing::error;

use tracing::{debug, info, instrument, trace, warn};
use tracing_subscriber::prelude::*;
use tracing_systemd::SystemdLayer;
fn main() {
    tracing_subscriber::registry()
        .with(
            SystemdLayer::new()
                .with_target(true)
                .use_level_prefix(false)
                .use_color(true)
                .with_thread_ids(true),
        )
        .init();

    root_log_fn(true);
}

#[instrument(fields(outside_instrument_field = true))]
fn root_log_fn(outside_instrument_field: bool) {
    info!("Root log");
    inner_log_1(true);
}

#[instrument(fields(inside_instrument_field = true))]
fn inner_log_1(inside_parameter_field: bool) {
    trace!("this is a trace");
    debug!(field_in_function = "also works");
    info!("this is an info log");
    warn!("Inner log 1");
    error!("this is an error");
}

依赖项

~2–12MB
~84K SLoC