baichun-framework-logger

baichun-framework-logger 是一个功能强大的日志模块,基于 tracing 构建,提供了丰富的日志记录功能。
特性
- 多种日志格式支持
- 文本格式(可自定义字段)
- JSON 格式(支持结构化日志)
- 灵活的日志滚动策略
- 按时间滚动(小时/天/周/月)
- 按大小滚动
- 混合滚动策略
- 日志文件管理
- 异步写入支持
- 控制台输出配置
安装
将以下内容添加到你的 Cargo.toml 文件中:
[dependencies]
baichun-framework-logger = "0.1"
快速开始
use baichun_framework_logger::{
LoggerConfig, LogLevel, LogFormat, TextFormatConfig,
TimePeriod, TimeRollingConfig, RollingPolicy,
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = LoggerConfig {
level: LogLevel::Info,
dir: "logs".into(),
filename: "app.log".into(),
rolling_policy: RollingPolicy::Time(TimeRollingConfig {
period: TimePeriod::Daily,
keep_days: 7,
}),
format: LogFormat::Text(TextFormatConfig {
time_format: "%Y-%m-%d %H:%M:%S".to_string(),
show_level: true,
show_target: true,
show_thread_id: true,
show_file: true,
show_line: true,
}),
async_write: true,
split_by_level: false,
console: None,
};
baichun_framework_logger::init(config)?;
tracing::info!("应用程序启动");
tracing::error!("发生错误:{}", "连接失败");
Ok(())
}
高级用法
JSON 格式日志
use baichun_framework_logger::{LoggerConfig, LogFormat, JsonFormatConfig};
let config = LoggerConfig {
format: LogFormat::Json(JsonFormatConfig {
time_format: "%Y-%m-%d %H:%M:%S".to_string(),
pretty: true,
include_caller: true,
include_thread: true,
}),
..Default::default()
};
按级别分离日志文件
let config = LoggerConfig {
split_by_level: true,
..Default::default()
};
混合滚动策略
use baichun_framework_logger::{
RollingPolicy, TimeRollingConfig, SizeRollingConfig,
TimePeriod,
};
let config = LoggerConfig {
rolling_policy: RollingPolicy::Compound {
time: TimeRollingConfig {
period: TimePeriod::Daily,
keep_days: 7,
},
size: SizeRollingConfig {
max_size: 100 * 1024 * 1024, max_files: 5,
},
},
..Default::default()
};
许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。