Sniffnet日志级别设置:调试与生产环境配置
Sniffnet使用Rust标准日志体系,支持`debug`、`info`、`warn`、`error`四个级别,通过编译时配置区分环境。调试模式下默认启用详细日志,生产环境仅保留关键错误信息,核心实现见[src/utils/error_logger.rs](https://link.gitcode.com/i/27edbd012ee2d16e5211bc17f493683d)。## 调试环境..
·
Sniffnet日志级别设置:调试与生产环境配置
日志级别概述
Sniffnet使用Rust标准日志体系,支持debug、info、warn、error四个级别,通过编译时配置区分环境。调试模式下默认启用详细日志,生产环境仅保留关键错误信息,核心实现见src/utils/error_logger.rs。
调试环境配置
自动调试模式
当使用cargo build默认编译时,Rust自动启用debug_assertions特性,触发以下行为:
- 错误日志自动panic(便于捕获开发阶段异常)
- 完整文件路径与行号输出
- 协议解析详细过程记录
关键实现代码:
// src/utils/error_logger.rs 第17行
assert!(!cfg!(debug_assertions)); // 调试模式下错误触发panic
手动调整日志
修改Cargo.toml添加日志过滤器:
[profile.dev]
rustflags = ["--cfg", 'log_level="debug"']
生产环境配置
发布模式编译
使用cargo build --release自动切换至生产配置:
- 仅保留
warn和error级别日志 - 禁用源码位置追踪
- 错误信息简化显示
测试验证代码:
// src/utils/error_logger.rs 第55-59行
#[test]
#[cfg(not(debug_assertions))]
fn test_error_logger_no_panic_on_err_in_release_mode() {
let err_result: Result<usize, &str> = Err("test_error");
let err_handled = err_result.log_err(location!());
assert_eq!(err_handled, err_result);
}
日志输出控制
生产环境日志通过src/networking/manage_packets.rs中的流量处理模块定向输出,默认记录:
- 适配器连接错误
- 数据包解析失败
- 权限不足异常
日志级别最佳实践
| 环境 | 推荐级别 | 典型应用场景 |
|---|---|---|
| 开发调试 | debug | 协议解析调试、UI组件渲染 |
| 测试验证 | info | 功能流程验证、性能基准测试 |
| 生产部署 | error | 服务中断、数据丢失风险 |
配置验证方法
- 调试模式验证:
cargo run --features debug_logs
- 生产模式验证:
cargo build --release
./target/release/sniffnet 2> error.log
查看生成的error.log确认日志级别是否符合预期。
扩展阅读
- 错误处理实现:src/utils/error_logger.rs
- 流量监控模块:src/networking/manage_packets.rs
- 编译配置:Cargo.toml
更多推荐
所有评论(0)