# CHANGELOG
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.2.0] - 2026-08-05
### ⚠️ BREAKING CHANGES
- **版本号升级**: 0.1.12 → 0.2.0,反映项目成熟度和 API 稳定性提升
- **依赖升级**: dbnexus 0.4 → 0.5, sea-orm 保持 2.0, oxcache 0.3 → 0.4, thiserror 1.x → 2.0, axum 0.6 → 0.8, trait-kit 0.3 → 0.4
### Added
- **compression feature**: 可选 ZSTD 压缩支持(避免 zstd-sys 符号冲突)
- **parquet feature**: Parquet/Arrow 导出支持(数据库 Sink 归档)
- **fast-masking feature**: Aho-Corasick 多模式加速脱敏
- **i18n 核心模块**: fluent-bundle + ICU 国际化支持(始终编译,非 feature flag)
- **通道缓冲文件 Sink**: ChannelBufferedFileSink 与背压策略
- **断路器保护**: CircuitBreaker 机制保护 Sink 故障恢复
- **环形缓冲**: RingBufferedFileSink 高吞吐场景
### Changed
- **模块重构**: `infrastructure` 模块重命名为 `integrations`
- **公共 API 统一**: 所有集成类型通过根级别 re-export 访问
- **edition 升级**: Rust edition 2024, MSRV 1.94
- **依赖特性化**: 所有依赖显式声明 `default-features = false`
### Removed
- **不存在的 feature 清理**: 文档中移除 `test-local`、`debug`、`metrics`、`i18n` 等从未定义的 feature flag
- **压缩算法简化**: 文档中移除 Brotli/LZ4 引用(实际仅支持 ZSTD 和 GZIP)
### Fixed
- 文档版本号、功能标志表、模块路径与实际代码同步
- README.md 许可证信息修正为 MIT(与 Cargo.toml 一致)
- README_EN.md Rust 版本徽章修正为 1.94+
## [0.1.12] - 2026-07-22
### 测试
- 新增 `tests/e2e_advanced.rs`(226 个测试):覆盖 CORE/ROT/PIPE/SEC/REL/PERF/OBS/CFG/compression/i18n/Integration 共 19 个模块的边界与异常场景
### 维护
- 移除未使用依赖:parking_lot(examples)
- 更新 sea-orm 到 2.0 稳定版
## [0.1.11] - 2026-07-17
### 安全修复
- **[vuln-0001]** 对 `table_name` 做 SQL 注入防护清洗
- **[vuln-0002]** `FileSink` 集成 `PathValidator` 防路径穿越;收紧敏感组件黑名单(新增 `.bashrc`/`.profile`/`.zshrc`/`.netrc`/`id_rsa`/`id_ed25519` 等),禁止落到用户主目录与密钥文件
- **[vuln-0003]** HTTP auth token 改为启动期缓存,获取失败 fail-closed(不再降级为无认证)
### 修复
- `compress_file`/`encrypt_file` 参数改 `&Path` 修 clippy `ptr_arg`
- 已安装的全局 logger/subscriber 不再重复 warn
### 重构
- examples/tests/benches:扩展 L1 重导出隔离 + 补 `tracing`/`chrono`/`tokio`/`serde` re-export
## [0.1.7] - 2026-07-13
### ⚠️ BREAKING CHANGES(仅影响启用 db 后端 feature 的用户)
- dbnexus 0.3 → 0.4(pre-1.0 minor bump,Cargo 视为不兼容);启用 `sqlite`/`postgres`/`mysql`/`duckdb`/`kit` feature 的用户需同步升级
- trait-kit 0.2 → 0.3(同上,仅影响 `kit` feature 用户)
### Dependencies
- dbnexus 0.3 → 0.4(对齐下游 sdforge/limiteron 依赖链)
- trait-kit 0.2 → 0.3(dbnexus 0.4 依赖 trait-kit 0.3)
- oxcache 0.3.4 → 0.3.8
### Fixed
- `src/error.rs`: Moved `InklogResult<T>` type alias from after `#[cfg(test)] mod tests` to before it, fixing clippy `items_after_test_module` lint
- `Cargo.toml`: MSRV updated from `1.85` to `1.94` to match actual requirement (sea-orm 2.0.0-rc + sqlx 0.9)
## [0.1.6] - 2026-07-12
### ⚠️ BREAKING CHANGES
- `error` module moved from `src/domain/types/error.rs` to `src/error.rs`, import path `crate::domain::types::error::` → `crate::error::`
- Added `InklogResult<T>` type alias
### Changed
- 文件级 import 扁平化为 mod 级 import
- `pub mod` 收敛为 `mod`(lib.rs 收敛)
- `mod.rs` 拆分为 `mod.rs` + `<module>.rs`(impl 提取)
- 导入路径统一为最浅 re-export 路径
- README 翻译为中文,新增 README_EN 英文版,徽章下添加语言切换链接
- AGENTS.md 添加到 .gitignore(禁止 AI 文件入库)
## [0.1.5] - 2026-07-11
### Changed
- 无代码变更,版本号对齐 workspace 同步升级
### Changed(Phase 6 前置)
- **edition 升级**: 从 edition 2021 升级至 edition 2024
- **MSRV 声明**: `rust-version = "1.85"` 显式声明最低支持 Rust 版本
- **MIT license 统一**: 许可证从 `"MIT OR Apache-2.0"` 统一为 `"MIT"`,移除 Apache-2.0 选项
### Security
- **edition 2024 unsafe 要求**: `std::env::set_var` / `std::env::remove_var` 调用包裹 `unsafe` 块(edition 2024 将其标记为 unsafe 操作)
## [0.1.2] - 2026-07-05
### BREAKING CHANGES
- **LogSink trait async 化**: `LogSink` trait 的 `write`/`flush`/`shutdown` 方法签名改为 `async`
- `FileSink`、`ConsoleSink`、`RingBufferedFileSink`、`DatabaseSink` 全部迁移至 async
- `DatabaseSink` 移除 `block_in_place`,使用原生 async
- `LoggerManager` 中所有 sink 调用更新为 `.await`
- 自定义 Sink 实现需要相应改为 async
- **ObjectPool API 重构**:
- `ObjectPool::new`/`with_config`/`get`/`put` 改为 `async` 并返回 `Result<_, InklogError>`
- 移除内部 `SHARED_RUNTIME`(内部 tokio runtime)
- ThreadLocal 池(`get_log_record`/`put_log_record`/`get_string_buffer`/`put_string_buffer`)保留为同步便捷函数
- **Cache trait 错误处理显性化**: `Cache` trait 的 `get`/`delete`/`exists` 方法返回 `Result<_, InklogError>`(此前为 `Option`/`bool`,错误被 `tracing::warn!` 静默吞掉)
- 移除 `OxCacheAdapter::default()`(原本通过 `.expect()` 触发 panic)
- `ObjectPool::with_config` 不再静默回退到 `Cache::default()`
- **dbnexus feature 拆分**: `dbnexus` feature 拆分为四个独立 feature:`sqlite`、`postgres`、`mysql`、`duckdb`(`duckdb` 仅用于 `--all-features` 测试场景,DatabaseSink 不直接支持 duckdb 驱动)
### Changed
#### 依赖重构
- `oxcache` 升级 0.2.0 → 0.3.3,启用 features `memory`/`serialization`/`tracing`/`macros`
- `dbnexus` 升级 0.2.0 → 0.3.1,新增 `duckdb` feature 用于 `--all-features` 测试场景(dbnexus 0.3.1 规则 2 例外:sqlite+duckdb+postgres+mysql 全部 4 个后端启用时允许共存)
- 移除直接的 `moka` 和 `dashmap` 依赖(现仅通过 oxcache 间接依赖)
- `sea-orm` TLS 后端从 `runtime-tokio-native-tls` 切换至 `runtime-tokio-rustls`
#### 代码清理
- 移除源码注释中所有 `confers` 引用
- 清理 `object_pool.rs` 中的死代码(1507 → ~650 行)
### Removed
- `SHARED_RUNTIME`(内部 tokio runtime)
- `ObjectPoolBuilder`、`PoolMetrics` 类型
- `ObjectPool` 死代码方法:`with_capacity`/`remove`/`contains`/`capacity`/`metrics`/`clear`/`execute_async`
- `LOG_RECORD_POOL`/`STRING_POOL` 静态变量
- `OxCacheAdapter::default()` 实现
- 直接的 `moka` 和 `dashmap` 依赖
### Security
- 在 `deny.toml` 忽略列表中添加 `RUSTSEC-2026-0173`(proc-macro-error2 unmaintained,transitive via dbnexus-macros/sea-bae,无安全升级路径)
## [0.1.1] - 2026-06-29
### BREAKING
- 完全移除 S3/AWS 代码和依赖(aws feature、aws-sdk-s3、aws-config 等)
- 移除 ArchiveConfig、S3Error、ArchiveError 类型
- 移除 archive 模块和 S3 归档服务
- **MSRV 提升**: Rust 1.75+ → 1.85+(因 rand 0.10 要求 MSRV 1.85)
- **rand 0.9 → 0.10**: `RngCore` trait 重命名为 `Rng`,`Rng` 重命名为 `RngExt`,`OsRng` 重命名为 `SysRng`
- **aes-gcm 0.10 → 0.11**: `Nonce::from_slice` 已废弃,改用 `Nonce::from`;`cipher.encrypt/decrypt` 接受 `&Nonce` 而非 `Nonce`
### Added
- 新增 10 个示例:object_pool、path_validator、log_sanitizer、log_adapter、compression、rotation、ring_buffered_file、config_file、metrics、circuit_breaker
- 测试覆盖率达 90.12%(3291/3652 行)
- 新增 Docker 测试基础设施(SQLite/PostgreSQL/MySQL)
- 新增 CI 流水线(test-docker.yml)
- Cargo.toml 新增 `rust-version = "1.85"` 显式声明 MSRV
### Changed
- **依赖升级**:
- `toml` 0.9 → 1.1(major 版本升级)
- `validator` 0.19 → 0.20
- `aes-gcm` 0.10 → 0.11(破坏性 API 变更已适配)
- `rand` 0.9 → 0.10(破坏性 API 变更已适配,MSRV 1.85+)
- `parquet` 57.3 → 59.0(major 版本升级)
- `arrow-array` 57.3 → 59.0
- `arrow-schema` 57.3 → 59.0
- `cron` 0.15 → 0.17
- `sha2` 0.10 → 0.11
- `pbkdf2` 0.12 → 0.13
- CI MSRV 矩阵从 1.70.0 提升至 1.85.0
- README/README_zh Rust 版本徽章从 1.75+ 更新为 1.85+
- docs/CONTRIBUTING.md MSRV 与版本引用同步更新
- examples/Cargo.toml 移除 s3_archive [[bin]] 定义
- lib.rs 移除 "S3 归档" 描述
### Fixed
- 修复 examples/Cargo.toml s3_archive 残留导致编译失败
- 修复 lib.rs S3 归档描述残留
- 适配 rand 0.10 破坏性 API:`RngCore` → `Rng`,`Rng` → `RngExt`(src/support/io/sink/encryption.rs、src/support/io/sink/file.rs、src/cli/decrypt.rs、benches/inklog_bench.rs)
- 适配 aes-gcm 0.11 破坏性 API:`Nonce::from_slice` → `Nonce::from`,`cipher.encrypt/decrypt` 接受引用(src/support/io/sink/file.rs、src/cli/decrypt.rs、tests/cli_integration.rs)
## [0.1.0] - 2026-01-18
### Added
#### 核心功能
- **LoggerManager**: 异步日志管理器,支持多种初始化方式
- `LoggerManager::new()` 默认初始化
- `LoggerManager::builder()` 构建器模式
- `LoggerManager::with_config()` 自定义配置
- **多输出目标支持**: 基于trait的可扩展sink架构
- ConsoleSink: 控制台输出,支持彩色显示
- FileSink: 文件输出,支持轮转和压缩
- DatabaseSink: 数据库输出,支持批量写入
- **配置系统**: 完整的TOML配置支持
- 全局配置、性能配置、HTTP服务器配置
- 环境变量覆盖
- 配置验证和错误处理
- **性能优化**: 基于crossbeam-channel的异步架构
- 有界通道,支持背压控制
- 多线程工作池
- 内存池优化
- **监控和指标**: 内置健康检查和性能指标
- HTTP健康检查端点
- Prometheus兼容指标
- 实时状态监控
#### 功能特性
- **日志轮转**: 基于大小和时间的自动轮转
- **数据掩码**: 敏感信息自动掩码功能
- **S3归档**: AWS S3云存储归档(可选功能)
- **CLI工具**: 配置生成、验证、日志解密命令行工具
#### 技术栈
- **异步运行时**: tokio 1.32+
- **日志框架**: tracing 0.1
- **序列化**: serde 1.0
- **并发**: crossbeam-channel 0.5
- **HTTP服务**: axum 0.6(可选)
### 兼容性
- **Rust**: 1.70+
- **平台**: Linux, macOS, Windows
- **数据库**: SQLite, PostgreSQL, MySQL(通过SeaORM)
- **云存储**: AWS S3兼容存储
### 示例用法
```rust
use inklog::LoggerManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let _logger = LoggerManager::new().await?;
tracing::info!("Hello, inklog!");
Ok(())
}
```
---
## [0.0.0] - 2025-12-30
### Added
- 初始项目结构
- 基础Cargo配置
- CI/CD工作流
[Unreleased]: https://github.com/Kirky-X/inklog/compare/v0.2.0...HEAD
[0.2.0]: https://github.com/Kirky-X/inklog/compare/v0.1.12...v0.2.0
[0.1.12]: https://github.com/Kirky-X/inklog/compare/v0.1.11...v0.1.12
[0.1.11]: https://github.com/Kirky-X/inklog/compare/v0.1.7...v0.1.11
[0.1.7]: https://github.com/Kirky-X/inklog/compare/v0.1.6...v0.1.7
[0.1.6]: https://github.com/Kirky-X/inklog/compare/v0.1.5...v0.1.6
[0.1.5]: https://github.com/Kirky-X/inklog/compare/v0.1.2...v0.1.5
[0.1.2]: https://github.com/Kirky-X/inklog/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/Kirky-X/inklog/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/Kirky-X/inklog/compare/v0.0.0...v0.1.0
[0.0.0]: https://github.com/Kirky-X/inklog/releases/tag/v0.0.0