Expand description
§inklog - 企业级 Rust 日志基础设施
inklog 是一个高性能、可扩展的日志库,专为生产环境设计。
§功能特性
- 多输出目标: 支持 Console、File、Database 三种输出通道
- 日志轮转: 支持按大小和按时间轮转
- 压缩与加密: 支持 Zstandard 压缩和 AES-256-GCM 加密
- 批量写入: 数据库批量写入,可配置批次大小和刷新间隔
- 降级机制: DB → File → Console 三级降级
- 健康监控: HTTP 端点暴露健康状态和 Prometheus 指标
§快速开始
§基础用法
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 模式配置
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
use inklog::LoggerManager;
let _logger = LoggerManager::builder()
.level("debug")
.console(true)
.file("logs/app.log")
.enable_http_server(true)
.http_port(9090)
.build()
.await?;
Ok(())
}§从配置文件加载
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(())
}§使用依赖注入模式
ⓘ
use std::sync::Arc;
use inklog::{LoggerManager, LoggerDependencies, InklogContainer};
use inklog::integrations::{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)
[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 = 8080Re-exports§
pub use domain::config;pub use domain::types::log_record;pub use support::io::sink;pub use support::processing::template;pub use support::io::sink::ZstdCompression;pub use support::io::sink::compression::compress_data;pub use support::io::sink::compression::compress_file;pub use support::io::sink::compression::compress_string;pub use support::io::sink::encryption::derive_key_from_password;pub use support::io::sink::encryption::get_encryption_key;pub use support::io::sink::ring_buffered_file::BackpressureStrategy;pub use support::io::sink::ring_buffered_file::ChannelBufferedConfig;pub use support::io::sink::ring_buffered_file::ChannelBufferedFileSink;pub use support::io::sink::ring_buffered_file::ChannelBufferedMetrics;pub use support::io::sink::CircuitBreaker;pub use support::io::sink::CircuitBreakerConfig;pub use support::io::sink::CircuitState;pub use support::io::sink::CompositeRotation;pub use support::io::sink::CompressionStrategy;pub use support::io::sink::DiskCheckable;pub use support::io::sink::FileSinkFactory;pub use support::io::sink::GzipCompression;pub use support::io::sink::LogSink;pub use support::io::sink::NoCompression;pub use support::io::sink::Rotatable;pub use support::io::sink::RotationContext;pub use support::io::sink::RotationResult;pub use support::io::sink::RotationStrategy;pub use support::io::sink::SinkFactory;pub use support::io::sink::SinkMetadata;pub use support::io::sink::SinkRegistry;pub use support::io::sink::SizeBasedRotation;pub use support::io::sink::TimeBasedRotation;pub use support::processing::masking;pub use domain::config::ArchiveFormat;pub use domain::config::ChannelStrategy;pub use domain::config::ConsoleSinkConfig;pub use domain::config::DatabaseDriver;pub use domain::config::DatabaseSinkConfig;pub use domain::config::FileSinkConfig;pub use domain::config::GlobalConfig;pub use domain::config::HttpAuthConfig;pub use domain::config::HttpErrorMode;pub use domain::config::HttpServerConfig;pub use domain::config::InklogConfig;pub use domain::config::ParquetConfig;pub use domain::config::PartitionStrategy;pub use domain::config::PerformanceConfig;pub use domain::config::TlsConfig;pub use domain::types::log_record::LogRecord;pub use integrations::DbNexusAdapter;pub use integrations::InklogModule;pub use integrations::Cache;pub use integrations::Config;pub use integrations::Database;pub use integrations::InklogConfigAdapter;pub use integrations::MockCache;pub use integrations::MockConfig;pub use integrations::MockDatabaseAdapter;pub use integrations::OxCacheAdapter;pub use integrations::OxCacheAdapterBuilder;pub use integrations::InklogBuildObserver;pub use integrations::create_inklog_scope;pub use integrations::populate_inklog_scope;pub use domain::core::InklogContainer;pub use domain::core::InklogContainerBuilder;pub use domain::core::LoggerBuilder;pub use domain::core::LoggerDependencies;pub use domain::core::LoggerManager;pub use support::io::LogAdapter;pub use support::io::LogLogger;pub use support::observability::FallbackAction;pub use support::observability::FallbackConfig;pub use support::observability::FallbackState;pub use support::observability::GaugeF64;pub use support::observability::HealthStatus;pub use support::observability::Metrics;pub use support::observability::SinkHealth;pub use support::observability::SinkHealthMonitor;pub use support::observability::SinkStatus;pub use support::processing::DataMasker;pub use support::processing::DataMaskerBuilder;pub use support::processing::LogTemplate;pub use support::processing::MaskRule;pub use support::processing::MaskRuleBuilder;pub use support::processing::MaskRuleRegistry;pub use support::processing::ObjectPool;pub use support::processing::ObjectPoolConfig;pub use support::processing::OutputFormat;pub use support::processing::RateLimiter;pub use support::processing::get_log_record;pub use support::processing::get_string_buffer;pub use support::processing::put_log_record;pub use support::processing::put_string_buffer;pub use chrono;pub use serde;pub use tokio;pub use tracing;
Modules§
- domain
- Domain module - core business logic layer.
- i18n
- Internationalization and locale-aware formatting for log operations.
- integrations
- Integrations module - external service integrations.
- support
- Support layer module - functional support layer.
Structs§
- LogSanitizer
- Log sanitizer for preventing log injection.
- Path
Validator - Path validator for security checks.
- Path
Validator Config - Configuration for path validation.
- Sanitizer
Config - Configuration for log sanitization.
- Validation
Result - Result of path validation.
Enums§
- Escape
Mode - Escape mode for log content sanitization.
- Inklog
Error - LogLevel
- 日志级别枚举
- LogLevel
Parse Error - 解析日志级别字符串的错误
Type Aliases§
- Inklog
Result - Convenience
Resulttype alias usingInklogErroras the error type.