2个版本
使用旧的Rust 2015
0.1.1 | 2018年9月12日 |
---|---|
0.1.0 | 2018年9月3日 |
#750 in 调试
33KB
505 行
syslog5424
- 基于特质的syslog 5424消息格式化
该crate提供了一种将数据格式化为RFC5424(或RFC5425)消息并写入任何实现了Write
的类型的方法。任何实现了Rfc5424Data
特质的数据类型都可以被格式化。
文档
slog
实现
该crate最初被创建为让slog
格式化其日志消息为rfc 5424的方式。
实现细节在这里:https://github.com/nocduro/slog-syslog5424
示例
此示例展示了Rfc5424Data
特质的简化实现。
#[derive(Debug)]
pub struct Rfc5424Message<'a> {
pub severity: Severity,
pub structured_data: Option<StructuredData<'a>>,
pub message: Option<Message>,
}
impl<'a> Rfc5424Data for Rfc5424Message<'a> {
fn severity(&self) -> Severity {
self.severity
}
fn timestamp(&self) -> Option<String> {
None
}
fn structured_data(&self) -> Option<StructuredData> {
self.structured_data.clone()
}
fn message(&self) -> Option<Message> {
self.message.clone()
}
}
fn main() {
// create the formatter struct
let formatter = Rfc5424Builder::new("enterprise_id", Facility::User)
.hostname("api_server_1").unwrap()
.app_name("api").unwrap()
.build();
// create a message to be formatted
let mut hmap: StructuredData = HashMap::new();
hmap.insert(
"custom",
vec![
("id".into(), "54".into()),
("progress".into(), "complete".into()),
],
);
let msg = Rfc5424Message {
severity: Severity::Error,
structured_data: Some(hmap),
message: Some(Message::Text("sample message. Hello there!".into())),
};
// run the formatter
let mut out = Vec::new();
formatter.format(&mut out, msg).unwrap();
println!("log: {}", String::from_utf8(out).unwrap());
}
操作系统支持
应在任何提供std
的系统上工作,具体的操作系统特性由用户在选择使用哪个Writer
时引入。
许可证
MIT(见LICENSE)