5个版本
0.3.2 | 2024年2月21日 |
---|---|
0.3.1 | 2024年2月21日 |
0.3.0 | 2024年2月19日 |
0.2.1 | 2024年2月16日 |
0.2.0 | 2024年2月16日 |
#605 in 调试
35KB
495 行
redis_logger
此 log::Log
实现允许将日志记录到Redis服务器。它支持将日志写入任意数量的pub/sub通道或流或两者。
您可以为pub/sub和流日志消息指定自定义编码器。使用 default_encoders
功能,编码器的默认实现可用。此功能默认禁用。
如果您启用 shared_logger
功能,您可以在 simplelog::CombinedLogger
中使用 RedisLogger
。
用法
将依赖项添加到您的 Cargo.toml
[dependencies]
log = "0.4"
redis = "0.24"
redis_logger = "0.3"
如何在您的应用程序中使用它
使用 RedisLoggerConfigBuilder
方法构建一个 RedisLoggerConfig
。指定一个连接和至少一个pub/sub或流通道。使用此配置实例化一个 RedisLogger
实例,如果您希望使用此日志记录器与其他日志记录器(如 parallel_logger crate 或 simplelog
crate 中的 CombinedLogger 日志记录器)一起使用,或者使用 RedisLogger::init
方法将日志记录器初始化为应用程序的唯一日志记录器。
使用 default_encoders
功能并将 RedisLogger
设置为唯一日志记录器的简单示例如下
fn main() {
let redis_client = redis::Client::open(REDIS_URL).unwrap();
let redis_connection = redis_client.get_connection().unwrap();
RedisLogger::init(
LevelFilter::Debug,
RedisLoggerConfigBuilder::build_with_pubsub_default(
redis_connection,
vec!["logging".into()],
),
);
}
此更广泛的示例在 ParallelLogger
中使用 RedisLogger
并使用 bincode
crate 和自定义 PubSubEncoder
对pub/sub消息进行编码
struct BincodeRedisEncoder;
impl PubSubEncoder for BincodeRedisEncoder {
fn encode(&self, record: &log::Record) -> Vec<u8> {
let mut slice = [0u8; 2000];
let message = SerializableLogRecord::from(record);
let size = bincode::encode_into_slice(message, &mut slice, BINCODE_CONFIG).unwrap();
let slice = &slice[..size];
slice.to_vec()
}
}
fn main() {
let redis_client = redis::Client::open(REDIS_URL).unwrap();
let redis_connection = redis_client.get_connection().unwrap();
ParallelLogger::init(
log::LevelFilter::Debug,
ParallelMode::Sequential,
vec![
FileLogger::new(LevelFilter::Debug, "log_file.log"),
TerminalLogger::new(LevelFilter::Info),
RedisLogger::new(
LevelFilter::Debug,
RedisLoggerConfigBuilder::build_with_pubsub(
redis_connection,
vec!["logging".into()],
BincodeRedisEncoder {},
),
),
],
);
}
路线图
- 支持除
redis_rs
以外的其他Redis crate(如fred
)。 - 支持在调用Redis时使用原子管道。
许可
许可协议为以下之一
- Apache License,版本2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
依赖
约3-10MB
约127K SLoC