#logging #unix-socket #logs #tcp-udp #sockets #send #facility

syslog

Syslog消息格式化和写入器,支持Unix套接字、UDP和TCP导出器

20个稳定版本 (6个主要版本)

使用旧Rust 2015

7.0.0 2024年7月26日
6.1.1 2024年4月18日
6.1.0 2023年4月26日
6.0.1 2021年12月19日
1.0.3 2015年3月11日

#60Unix API 中排名

Download history 19843/week @ 2024-04-30 20123/week @ 2024-05-07 21075/week @ 2024-05-14 19399/week @ 2024-05-21 22471/week @ 2024-05-28 21699/week @ 2024-06-04 18859/week @ 2024-06-11 18003/week @ 2024-06-18 17843/week @ 2024-06-25 15777/week @ 2024-07-02 20153/week @ 2024-07-09 19483/week @ 2024-07-16 19633/week @ 2024-07-23 20819/week @ 2024-07-30 19594/week @ 2024-08-06 15933/week @ 2024-08-13

79,385 每月下载量
73crate中使用(57个直接使用)

MIT 许可证

40KB
937

Rust中发送Syslog

Build Status Codecov crates.io Version

一个用于向Unix套接字、TCP或UDP发送syslog消息的小型库。

安装

syslog可在crates.io上使用,并可以像这样包含在您的Cargo项目中:

[dependencies]
syslog = "^6.0"

文档

参考文档可在此处找到。

示例

extern crate syslog;

use syslog::{Facility, Formatter3164};

fn main() {
  let formatter = Formatter3164 {
    facility: Facility::LOG_USER,
    hostname: None,
    process: "myprogram".into(),
    pid: 42,
  };

  match syslog::unix(formatter) {
    Err(e)         => println!("impossible to connect to syslog: {:?}", e),
    Ok(mut writer) => {
      writer.err("hello world").expect("could not write error message");
    }
  }
}

结构体syslog::Logger实现了来自log crate的Log,因此可以作为其他日志系统的后端使用

extern crate syslog;
#[macro_use]
extern crate log;

use syslog::{Facility, Formatter3164, BasicLogger};
use log::{SetLoggerError, LevelFilter};

fn main() {
    let formatter = Formatter3164 {
        facility: Facility::LOG_USER,
        hostname: None,
        process: "myprogram".into(),
        pid: 0,
    };

    let logger = syslog::unix(formatter).expect("could not connect to syslog");
    log::set_boxed_logger(Box::new(BasicLogger::new(logger)))
            .map(|()| log::set_max_level(LevelFilter::Info));

    info!("hello world");
}

有三个函数用于创建记录器

  • unix函数通过Unix套接字将消息发送到本地syslog:syslog::unix(formatter)
  • tcp函数需要一个远程TCP syslog服务器的地址:tcp(formatter, "127.0.0.1:4242")
  • udp函数需要一个本地端口号和远程UDP syslog服务器的地址:udp(formatter, "127.0.0.1:1234", "127.0.0.1:4242")

依赖项

~0.7–24MB
~330K SLoC