inklog 0.1.5

Enterprise-grade Rust logging infrastructure
Documentation
# Agents Guide

## Overview

inklog 是 Rust 企业级结构化日志库,基于 Tokio 异步运行时,提供多输出目标(Console/File/Database)、日志轮转、压缩(ZSTD/GZIP/Brotli/LZ4)、AES-256-GCM 加密、数据掩码、健康监控等企业级功能。

- **版本**: 0.1.4
- **edition**: 2024
- **MSRV**: Rust 1.85+
- **许可证**: MIT
- **仓库**: https://github.com/Kirky-X/inklog

## Project Structure

```
inklog/
- src/
  - lib.rs                    # 公共 API 入口
  - log_level.rs              # 日志级别定义
  - validation/               # 输入验证 (path, sanitize)
  - domain/                   # 领域层
    - core/                   # 核心日志管理
      - manager.rs            # LoggerManager (~1113 行)
      - container.rs          # InklogContainer DI 容器
      - subscriber.rs         # tracing subscriber
      - mod.rs
    - config/                 # 配置系统
      - config.rs             # InklogConfig 等配置结构体 (~989 行)
      - mod.rs
    - types/                  # 类型定义
      - error.rs              # InklogError 错误类型
      - log_record.rs         # LogRecord 日志记录
      - mod.rs
    - db_provider.rs          # 数据库提供者 trait
    - mod.rs
  - support/                  # 支撑层
    - io/                     # I/O 层
      - sink/                 # 输出 Sink
        - mod.rs              # LogSink trait 定义
        - console.rs          # ConsoleSink 控制台输出
        - file.rs             # FileSink 文件输出 (~1513 行,最复杂)
        - database/           # DatabaseSink 数据库输出
          - mod.rs
        - ring_buffered_file.rs # RingBufferedFileSink
        - compression.rs      # 压缩 (ZSTD/GZIP/Brotli/LZ4)
        - encryption.rs       # AES-256-GCM 加密
        - rotation.rs         # 日志轮转
        - circuit_breaker.rs  # 断路器保护
        - entity.rs           # Sink 实体
        - registry.rs         # Sink 注册表
      - log_adapter.rs        # log → tracing 适配器
      - mod.rs
    - processing/             # 处理层
      - masking.rs            # PII 数据掩码
      - template.rs          # 日志模板
      - object_pool.rs        # 对象池 (~650 行)
      - mod.rs
    - observability/          # 可观测性
      - metrics.rs            # 健康监控和指标 (~1475 行)
      - mod.rs
    - mod.rs
  - integrations/             # 集成层
    - kit/                    # DI Kit 集成
      - module.rs             # InklogModule
      - mod.rs
    - infra/                  # 基础设施适配器
      - database.rs           # 数据库适配器
      - cache.rs              # 缓存适配器 (OxCacheAdapter)
      - config.rs             # 配置适配器
      - mod.rs
    - dbnexus_adapter.rs      # DbNexus 日志适配器
    - mod.rs
  - cli/                      # 命令行工具
    - mod.rs                  # CLI 入口 (inklog-cli)
    - decrypt.rs              # 解密命令
    - generate.rs             # 配置生成命令
    - validate.rs             # 验证命令
  - i18n/                     # 国际化 (可选, feature = "i18n")
    - mod.rs
- tests/                      # 测试套件
  - unit/                     # 单元测试
  - integration/              # 集成测试
  - combinations/             # 组合测试
  - performance/              # 性能测试
- examples/                   # 示例 crate (workspace member)
- docs/                       # 项目文档
- scripts/                    # 脚本 (pre-commit 等)
- benches/                    # 基准测试
- Cargo.toml                  # 项目配置
- deny.toml                   # cargo-deny 配置
- rustfmt.toml                # 代码格式化配置
- .clippy.toml               # Clippy 配置
```

## Where to Look

| 任务 | 位置 | 说明 |
|------|----------|-------|
| 初始化日志 | `src/domain/core/manager.rs` | `LoggerManager::new()` / `builder()` / `with_config()` |
| 配置系统 | `src/domain/config/config.rs` | `InklogConfig`, `FileSinkConfig`, `DatabaseSinkConfig` 等 |
| 核心日志 | `src/domain/core/` | LoggerManager, LoggerBuilder, InklogContainer |
| 输出 Sink | `src/support/io/sink/` | ConsoleSink, FileSink, DatabaseSink, RingBufferedFileSink |
| 文件输出 | `src/support/io/sink/file.rs` | 轮转、压缩、加密 (~1513 行,最复杂模块) |
| 数据库输出 | `src/support/io/sink/database/mod.rs` | Sea-ORM 批量写入 |
| 处理器 | `src/support/processing/` | masking, template, object_pool |
| CLI | `src/cli/` | decrypt, generate, validate 命令 |
| 可观测性 | `src/support/observability/metrics.rs` | 健康监控、Prometheus 指标 |
| 数据掩码 | `src/support/processing/masking.rs` | PII 正则脱敏 |
| 加密 | `src/support/io/sink/encryption.rs` | AES-256-GCM |
| 压缩 | `src/support/io/sink/compression.rs` | ZSTD/GZIP/Brotli/LZ4 |
| 断路器 | `src/support/io/sink/circuit_breaker.rs` | Sink 故障保护 |
| DI 集成 | `src/integrations/kit/` | trait-kit 依赖注入 |
| 适配器 | `src/integrations/infra/` | cache, config, database 适配器 |
| 错误类型 | `src/domain/types/error.rs` | `InklogError` |
| 日志记录 | `src/domain/types/log_record.rs` | `LogRecord` |
| 路径验证 | `src/validation/path.rs` | `PathValidator` |
| 日志消毒 | `src/validation/sanitize.rs` | `LogSanitizer` |

## Conventions

- **edition**: 2024, rust 1.85+
- **许可证**: MIT
- **格式化**: `rustfmt.toml` 配置 (hard tabs, 4-space width)
- **错误处理**: `thiserror` 用于错误类型, `anyhow` 用于错误上下文
- **异步**: tokio 运行时, `async/.await` 全异步
- **序列化**: `serde` derive macros
- **Feature flags**: `http`, `cli` (默认); `sqlite`, `postgres`, `mysql`, `duckdb`, `kit`, `i18n` (可选)
- **依赖必须通过 feature 门控**: 可选依赖使用 `optional = true` + feature flag
- **测试**: `serial_test` 用于并行测试隔离
- **DI**: trait-kit 框架用于依赖注入
- **TDD 开发流程**: Red → Green → Commit → Analyze → Next

## Anti-Patterns

- **禁止** 在 async 上下文中阻塞 (使用 `tokio::spawn`)
- **禁止** 使用 `std::thread` (使用 tokio tasks)
- **禁止** 提交 `logs/` 或 `temp/rust/` 文件
- **禁止** 修改外部依赖 (`oxcache`, `dbnexus`, `sea-orm`, `trait-kit` 等)
- **禁止** 向后兼容 (FORBIDDEN backward compatibility)
- **禁止** 修改外部依赖声明

## Commands

```bash
# 构建
cargo build --all-features

# 测试
cargo test --lib --all-features
cargo test --all-features --workspace

# 格式化
cargo fmt --all -- --check

# Clippy (warnings = errors)
cargo clippy --all-targets --all-features -- -D warnings

# 安全审计
cargo deny check

# 覆盖率 (目标: 95%+)
cargo tarpaulin --out Html --all-features

# 文档
cargo doc --all-features
```

## Notes

- `src/support/io/sink/file.rs` 是最大的模块 (~1513 行) — 修改时需谨慎
- DatabaseSink 支持 PostgreSQL/MySQL/SQLite (通过 Sea-ORM)
- CLI 入口在 `src/cli/mod.rs` (通过 `[[bin]]` 在 Cargo.toml 定义)
- 健康监控指标在 `src/support/observability/metrics.rs`
- duckdb feature 仅用于 `--all-features` 测试场景,DatabaseSink 不直接支持 duckdb 驱动