1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
// Copyright (c) 2026 Kirky.X
//
// Licensed under the MIT License
// See LICENSE file in the project root for full license information.
//! # inklog - 企业级 Rust 日志基础设施
//!
//! inklog 是一个高性能、可扩展的日志库,专为生产环境设计。
//!
//! ## 功能特性
//!
//! - **多输出目标**: 支持 Console、File、Database 三种输出通道
//! - **日志轮转**: 支持按大小和按时间轮转
//! - **压缩与加密**: 支持 Zstandard 压缩和 AES-256-GCM 加密
//! - **批量写入**: 数据库批量写入,可配置批次大小和刷新间隔
//! - **降级机制**: DB → File → Console 三级降级
//! - **健康监控**: HTTP 端点暴露健康状态和 Prometheus 指标
//!
//! ## 快速开始
//!
//! ### 基础用法
//!
//! ```rust,no_run
//! use inklog::{LoggerManager, InklogConfig};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // 使用默认配置初始化
//! let _logger = LoggerManager::new().await?;
//!
//! // 使用 tracing 宏记录日志
//! tracing::info!("Hello, inklog!");
//!
//! Ok(())
//! }
//! ```
//!
//! ### 使用 Builder 模式配置
//!
//! ```rust,no_run
//! use inklog::LoggerManager;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let _logger = LoggerManager::builder()
//! .level("debug")
//! .console(true)
//! .file("logs/app.log")
//! .enable_http_server(true)
//! .http_port(9090)
//! .build()
//! .await?;
//!
//! Ok(())
//! }
//! ```
//!
//! ### 从配置文件加载
//!
//! ```rust,no_run
//! use inklog::LoggerManager;
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // 从指定文件加载
//! let _logger = LoggerManager::from_file("config.toml").await?;
//!
//! // 或自动搜索配置文件
//! // let _logger = LoggerManager::load().await?;
//!
//! Ok(())
//! }
//! ```
//!
//! ### 使用依赖注入模式
//!
//! ```rust,ignore
//! use std::sync::Arc;
//! use inklog::{LoggerManager, LoggerDependencies, InklogContainer};
//! use inklog::infrastructure::{OxCacheAdapter, InklogConfigAdapter};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! // 方式 1: 使用依赖注入容器
//! let container = InklogContainer::new()?;
//! let logger = container.create_logger().await?;
//!
//! // 方式 2: 使用 Builder 模式注入依赖
//! let logger = LoggerManager::builder()
//! .cache(Arc::new(OxCacheAdapter::new()?))
//! .config(Arc::new(InklogConfigAdapter::new()?))
//! .build().await?;
//!
//! // 方式 3: 使用 with_dependencies
//! let deps = LoggerDependencies {
//! cache: Some(Arc::new(OxCacheAdapter::new()?)),
//! config: Some(Arc::new(InklogConfigAdapter::new()?)),
//! ..Default::default()
//! };
//! let logger = LoggerManager::with_dependencies(deps).await?;
//!
//! Ok(())
//! }
//! ```
//!
//! ## 配置文件示例 (TOML)
//!
//! ```toml
//! [global]
//! level = "info"
//!
//! [console_sink]
//! enabled = true
//!
//! [file_sink]
//! enabled = true
//! path = "logs/app.log"
//! max_size = "100MB"
//! rotation = "daily"
//!
//! [http_server]
//! enabled = true
//! host = "127.0.0.1"
//! port = 8080
//! ```
// Backwards compatibility - expose modules at root level
pub use config;
pub use log_record;
pub use sink;
pub use template;
// Domain layer
// Support layer
// Re-export masking for benchmarks
pub use masking;
// Integrations layer
// Re-export types from domain layer for backwards compatibility
pub use ;
pub use InklogError;
pub use LogRecord;
pub use ;
pub use LogLevel;
pub use ;
pub use ;
pub use ;
pub use ;