docs.rs failed to build rat_logger-0.2.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
rat_logger-0.3.3
rat_logger
🇨🇳 中文 | 🇺🇸 English | 🇯🇵 日本語
rat_logger 是一个用 Rust 编写的高性能、线程安全的日志库,采用生产者-消费者架构和异步写入机制,提供卓越的性能表现和灵活的配置选项。
特性
- 极致性能: 采用生产者-消费者架构,在 MacBook Air M1 环境下实测文件写入性能可达 40万+ msg/sec(仅供参考)
- 线程安全: 完全线程安全,支持多线程并发写入,采用原子操作避免锁竞争
- 多种输出方式: 支持终端、文件、UDP 网络等多种输出方式
- 分层配置: 格式配置与颜色配置分离,默认无颜色主题
- 日志宏: 兼容标准 log 库的宏接口,提供便捷的日志记录方式
- 结构化日志: 支持结构化的日志记录和元数据
- 压缩支持: 内置 LZ4 压缩功能,自动压缩旧日志文件
- UDP 网络传输: 支持通过 UDP 协议将日志发送到远程服务器
- 认证机制: 支持基于令牌的认证机制
快速开始
使用日志宏(推荐)
use ;
自定义处理器配置
use ;
单独文件处理器
use ;
UDP 网络输出
use ;
多输出处理器
use ;
架构设计
rat_logger 采用了先进的生产者-消费者架构:
- 生产者-消费者模式: 主线程发送日志指令,工作线程异步处理文件操作
- 命令模式: 使用 FileCommand 枚举分离业务逻辑,支持写入、刷新、轮转、压缩等操作
- 批量写入: 8KB 阈值或 100ms 间隔的批量写入策略,大幅提升性能
- 跨平台优化: Windows 平台使用 sync_data,其他平台使用 sync_all
- 无锁设计: 使用 crossbeam-channel 进行线程间通信,避免锁竞争
日志级别
rat_logger 支持标准的日志级别(从低到高):
Trace- 最详细的日志信息Debug- 调试信息Info- 一般信息Warn- 警告信息Error- 错误信息
每个级别都有相应的日志宏:trace!、debug!、info!、warn!、error!
配置系统
格式配置 (FormatConfig)
颜色配置 (ColorConfig)
文件配置 (FileConfig)
网络配置 (NetworkConfig)
性能特性
- 生产者-消费者架构: 分离日志生成和处理,避免阻塞主线程
- 批量写入: 8KB 阈值或 100ms 间隔的智能批量写入
- 异步压缩: 使用线程池进行异步文件压缩
- 跨平台优化: 针对不同平台的同步策略优化
- 零拷贝: 在关键路径上使用零拷贝技术
- 内存高效: 智能缓冲区管理,避免内存浪费
性能基准测试结果
在 MacBook Air M1 本机环境下的性能表现(仅供参考):
文件和终端输出
- 终端输出: ~400,000+ 消息/秒(优化后)
- 文件输出: ~408,025 消息/秒
- 终端+文件: ~501,567 消息/秒
- 多线程环境: ~239,808 消息/秒
- 不同日志级别: 833K-1.7M 消息/秒
UDP网络传输性能
- 100条消息批处理: ~725,516 消息/秒
- 1000条消息批处理: ~860,739 消息/秒
- 5000条消息批处理: ~921,326 消息/秒
注:UDP网络传输测试基于本机loopback接口(127.0.0.1),实际网络环境下性能可能因网络条件而异
线程安全
rat_logger 完全支持多线程环境:
- 使用 crossbeam-channel 进行无锁线程间通信
- 支持多线程并发写入,无数据竞争风险
- 原子操作用于统计信息收集
- 在高并发场景下保持稳定性能
压缩支持
内置日志文件压缩功能:
- 使用 LZ4 压缩算法,平衡压缩率和性能
- 可配置压缩级别 (1-9)
- 异步压缩线程池,不阻塞主线程
- 自动清理旧压缩文件
网络传输
支持通过 UDP 协议发送日志:
- 基于 bincode 的高效序列化
- 支持基于令牌的认证机制
- 兼容 zerg_creep 的 UDP 包格式
- 批量网络发送优化
错误处理
rat_logger 提供了完善的错误处理机制:
- 内部错误不会影响主程序运行
- 优雅的错误恢复机制
- 详细的错误日志记录
- 可配置的错误处理策略
依赖项
[]
= "0.2.0"
许可证
本项目采用 LGPLv3 许可证。详见 LICENSE 文件。
贡献
欢迎提交 Issue 和 Pull Request 来改进 rat_logger。
更新日志
v0.2.0
- 升级到 Rust 2024 Edition
- 更新依赖项到最新版本
- 性能优化和稳定性改进
- 发布到 crates.io
- 改进文档和示例
v0.1.0
- 初始版本发布
- 生产者-消费者架构实现
- 支持基本日志记录功能
- 文件和网络输出支持
- LZ4 压缩功能
- 线程安全保证
- 日志宏支持
- 分层配置系统
- 跨平台优化
示例代码
项目包含完整的示例代码:
examples/basic_usage.rs- 基础使用示例examples/composite_handler.rs- 多输出处理器示例examples/file_rotation.rs- 文件轮转功能测试examples/pm2_style_logging.rs- PM2风格多文件日志管理tests/performance_comparison.rs- 性能对比测试