10 个稳定版本
使用 Rust 2015 版本
3.0.3 | 2018年5月7日 |
---|---|
3.0.2 | 2018年4月20日 |
3.0.1 | 2018年1月15日 |
3.0.0 | 2017年12月28日 |
1.0.3 | 2017年7月10日 |
#471 in Unix APIs
1,099 monthly downloads
用于 2 crates
24KB
407 代码行
log4rs-syslog
log4rs-syslog
- 基于 libc 的 syslog() 函数的非常简单的 log4rs 系统日志后端。仅支持 *nix 系统。
特性
- 带有或没有使用身份字符串、日志选项和设施调用 openlog() 的日志记录。
- 自定义 rust 的
log
包日志级别与 syslog 的日志级别之间的映射。
限制
- 当有多个系统日志后端时,使用最后构建的后端的 openlog() 配置。
- 在调用 log4rs_syslog::SyslogAppenderBuilder::build() 时应用 openlog() 配置,而不是在 log4rs::init_config() 或 log4rs::Handle::set_config() 上。
在使用 libc 的接口时,没有适当的办法来解决这个问题。
重大变更
2.0 → 3.0
- 升级到
log
0.4 和log4rs
0.8。
1.0 → 2.0
log4rs_syslog::register_deserializer()
更名为log4rs_syslog::register()
。- 可序列化配置文件中的
kind
从syslog
更改为libc-syslog
。 - 日志选项常量从
log4rs_syslog::LOG_*
更改为log4rs_syslog::LogOption::LOG_*
,由于bitflags
包的更改。
使用方法
将此添加到您的 Cargo.toml 文件中
[dependencies]
log4rs-syslog = "3.0"
基于配置文件的初始化
示例配置文件
appenders:
syslog:
kind: libc-syslog
openlog:
ident: log4rs-syslog-example
option: LOG_PID | LOG_NDELAY | LOG_CONS
facility: Daemon
encoder:
pattern: "{M} - {m}"
root:
level: trace
appenders:
- syslog
示例代码
#[macro_use]
extern crate log;
extern crate log4rs;
extern crate log4rs_syslog;
fn main() {
let mut deserializers = log4rs::file::Deserializers::new();
log4rs_syslog::register(&mut deserializers);
// Note that configuration file should have right extension, otherwise log4rs will fail to
// recognize format.
log4rs::init_file("test.yaml", deserializers).unwrap();
trace!("Example trace message");
debug!("Example debug message");
info!("Example information message");
warn!("Example warning message");
error!("Example error message");
println!("Check your logs for new messages");
}
手动初始化
示例代码
#[macro_use]
extern crate log;
extern crate log4rs;
extern crate log4rs_syslog;
fn main() {
// Use custom PatternEncoder to avoid duplicate timestamps in logs.
let encoder = Box::new(log4rs::encode::pattern::PatternEncoder::new("{M} - {m}"));
let appender = Box::new(
log4rs_syslog::SyslogAppender::builder()
.encoder(encoder)
.openlog(
"log4rs-syslog-example",
log4rs_syslog::LogOption::LOG_PID,
log4rs_syslog::Facility::Daemon,
)
.build(),
);
let config = log4rs::config::Config::builder()
.appender(log4rs::config::Appender::builder().build(
"syslog",
appender,
))
.build(log4rs::config::Root::builder().appender("syslog").build(
log::LevelFilter::Trace,
))
.unwrap();
log4rs::init_config(config).unwrap();
trace!("Example trace message");
debug!("Example debug message");
info!("Example information message");
warn!("Example warning message");
error!("Example error message");
println!("Check your logs for new messages");
}
运行示例
git clone --branch b3.0.0 https://github.com/im-0/log4rs-syslog
cd log4rs-syslog
cargo run --example manually
cargo run --example from_conf
依赖关系
~1.5–2.2MB
~36K SLoC