#slog #logging #log-messages #loggly

slog-loggly

这是Rust中slog日志基础设施的非官方Loggly输出。

12个版本

0.6.0 2024年6月19日
0.5.1 2022年12月13日
0.5.0 2021年12月6日
0.4.0 2020年7月8日
0.1.1 2018年5月2日

#10 in #slog

MIT/Apache

43KB
926

Loggly输出插件为slog

Crates.io Documentation Build Status

这是Rust中slog日志基础设施的非官方Loggly输出。

使用方法

将以下依赖项添加到您的Cargo.toml文件中

slog-loggly = "0.6.0"

请参阅examples目录和文档以获取使用示例。


lib.rs:

这是一个Rust库,提供将日志消息发送到Loggly的slog输出。

注意事项

该输出将所有日志消息序列化为JSON对象。如果您在日志记录器和日志消息中使用键值对,请注意,如果两个键值对具有相同的键,则一个可以覆盖另一个。覆盖遵循以下简单规则

  1. 派生日志记录器可以覆盖其祖先的键值对。
  2. 日志消息可以覆盖其日志记录器的键值对。
  3. 最后指定的键值对覆盖之前指定的所有内容。

使用方法

请注意,Loggly输出是异步的,日志消息在后台发送。如果您的应用程序退出,队列中可能仍有一些日志消息。

在异步应用程序中使用Loggly输出

use slog::{debug, error, info, o, warn, Drain, Logger};
use slog_loggly::LogglyDrain;

#[tokio::main]
async fn main() {
    // Your Loggly token and tag.
    let loggly_token = "your-loggly-token";
    let loggly_tag = "some-app";

    // Create a custom Loggly drain.
    let (drain, mut fhandle) = LogglyDrain::builder(loggly_token, loggly_tag)
        .spawn_task()
        .unwrap();

    // Create a logger.
    let logger = Logger::root(drain.fuse(), o!());

    debug!(logger, "debug"; "key" => "value");
    info!(logger, "info"; "key" => "value");
    warn!(logger, "warn"; "key" => "value");
    error!(logger, "error"; "key" => "value");

    // You can return the flush handle to make sure that all log
    // messages get sent before the process terminates.
    // fhandle.async_flush().await.unwrap();
}

在普通应用程序中使用Loggly输出

use slog::{debug, error, info, o, warn, Drain, Logger};
use slog_loggly::LogglyDrain;

// Your Loggly token and tag.
let loggly_token = "your-loggly-token";
let loggly_tag = "some-app";

// Create a custom Loggly drain.
let (drain, mut fhandle) = LogglyDrain::builder(loggly_token, loggly_tag)
    .spawn_thread()
    .unwrap();

// Create a logger.
let logger = Logger::root(drain.fuse(), o!());

debug!(logger, "debug"; "key" => "value");
info!(logger, "info"; "key" => "value");
warn!(logger, "warn"; "key" => "value");
error!(logger, "error"; "key" => "value");

// You can use the flush handle to make sure that all log messages get
// sent before the process terminates.
// fhandle.blocking_flush().unwrap();

依赖项

~5–18MB
~297K SLoC