| Crates.io | inklog |
| lib.rs | inklog |
| version | 0.1.0 |
| created_at | 2026-01-18 06:12:44.580292+00 |
| updated_at | 2026-01-18 06:12:44.580292+00 |
| description | Enterprise-grade Rust logging infrastructure |
| homepage | |
| repository | https://github.com/Kirky-X/inklog |
| max_upload_size | |
| id | 2051880 |
| size | 1,034,347 |
Enterprise-grade Rust Logging Infrastructure
โจ Features โข ๐ Quick Start โข ๐ Documentation โข ๐ป Examples โข ๐ค Contributing
Inklog provides a comprehensive logging solution for enterprise applications:
| โก High Performance | ๐ Security First | ๐ Multi-Target | ๐ Observability |
|---|---|---|---|
| Async I/O with Tokio | AES-256-GCM encryption | Console, File, DB, S3 | Health monitoring |
| Batch writes & compression | Zeroized secret memory | Automatic rotation | Metrics & tracing |
use inklog::{InklogConfig, LoggerManager};
use std::path::PathBuf;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = InklogConfig {
file_sink: Some(inklog::FileSinkConfig {
enabled: true,
path: "logs/app.log".into(),
max_size: "100MB".into(),
compress: true,
..Default::default()
}),
..Default::default()
};
let _logger = LoggerManager::with_config(config).await?;
log::info!("Application started successfully");
log::error!("Something went wrong with error details");
Ok(())
}
| ๐ฏ Core Features | โก Enterprise Features |
|---|---|
| Always Available | Optional |
๐ฏ Core Features (Always Available)
|
โก Enterprise Features
|
| Preset | Features | Use Case |
|---|---|---|
| minimal | No optional features | Core logging only |
| standard | http, cli |
Standard development setup |
| full | All default features | Production-ready logging |
Add this to your Cargo.toml:
[dependencies]
inklog = "0.1"
For full feature set:
[dependencies]
inklog = { version = "0.1", features = ["default"] }
|
Step 1: Initialize Logger
|
Step 2: Log Messages
|
|
Step 3: File Logging
|
Step 4: Database Logging
|
use inklog::{FileSinkConfig, InklogConfig};
// Set encryption key from environment
std::env::set_var("INKLOG_ENCRYPTION_KEY", "base64-encoded-32-byte-key");
let config = InklogConfig {
file_sink: Some(FileSinkConfig {
enabled: true,
path: "logs/encrypted.log.enc".into(),
max_size: "10MB".into(),
encrypt: true,
encryption_key_env: Some("INKLOG_ENCRYPTION_KEY".into()),
compress: false, // Don't compress encrypted logs
..Default::default()
}),
..Default::default()
};
let _logger = LoggerManager::with_config(config).await?;
use inklog::{InklogConfig, S3ArchiveConfig};
let config = InklogConfig {
s3_archive: Some(S3ArchiveConfig {
enabled: true,
bucket: "my-log-bucket".to_string(),
region: "us-west-2".to_string(),
archive_interval_days: 7,
local_retention_days: 30,
prefix: "logs/".to_string(),
compression: inklog::archive::CompressionType::Zstd,
..Default::default()
}),
..Default::default()
};
let manager = LoggerManager::with_config(config).await?;
manager.start_archive_service().await?;
use inklog::{InklogConfig, config::GlobalConfig};
let format_string = "[{timestamp}] [{level:>5}] {target} - {message} | {file}:{line}";
let config = InklogConfig {
global: GlobalConfig {
level: "debug".into(),
format: format_string.to_string(),
masking_enabled: true,
..Default::default()
},
..Default::default()
};
let _logger = LoggerManager::with_config(config).await?;
inklog = "0.1" # Includes: aws, http, cli
# Cloud & Storage
inklog = { version = "0.1", features = [
"aws", # AWS S3 archive support
] }
# HTTP Server
inklog = { version = "0.1", features = [
"http", # Axum HTTP health endpoint
] }
# CLI Tools
inklog = { version = "0.1", features = [
"cli", # decrypt, generate, validate commands
] }
# Configuration
inklog = { version = "0.1", features = [
"confers", # TOML configuration support
] }
# Development
inklog = { version = "0.1", features = [
"test-local", # Local testing mode
"debug", # Additional security audit logging
] }
| Feature | Dependencies | Description |
|---|---|---|
| aws | aws-sdk-s3, aws-config, aws-types | AWS S3 cloud archive |
| http | axum | HTTP health check endpoint |
| cli | clap, glob, toml | Command-line utilities |
| confers | confers, toml | External TOML configuration support |
| test-local | - | Local testing mode |
| debug | - | Security audit logging |
|
๐ API Reference
Complete API docs |
๐ป Examples
Working code examples |
๐ Guides
In-depth guides |
| Resource | Description |
|---|---|
| ๐ API Reference | Complete API documentation on docs.rs |
| ๐๏ธ Architecture | System architecture and design decisions |
| ๐ Security | Security best practices and features |
| ๐ฆ Examples | Working code examples for all features |
๐ Basic Logging
|
๐ File Logging with Rotation
|
๐ Encrypted Logging
|
๐๏ธ Database Logging
|
โ๏ธ S3 Cloud Archive
|
๐ฅ HTTP Health Endpoint
|
๐จ Custom Format
|
๐ Data Masking
|
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Application Layer โ
โ (Your code using log! macros) โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Inklog API Layer โ
โ - LoggerManager, LoggerBuilder โ
โ - Configuration management โ
โ - Health monitoring โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Sink Abstraction Layer โ
โ - ConsoleSink โ
โ - FileSink (rotation, compression) โ
โ - DatabaseSink (batch writes) โ
โ - AsyncFileSink โ
โ - RingBufferedFileSink โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Core Processing Layer โ
โ - Log formatting & templates โ
โ - Data masking (PII redaction) โ
โ - Encryption (AES-256-GCM) โ
โ - Compression (ZSTD, GZIP, Brotli) โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Concurrency & I/O โ
โ - Tokio async runtime โ
โ - Crossbeam channels โ
โ - Rayon parallel processing โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Storage & External Services โ
โ - Filesystem โ
โ - Database (PostgreSQL, MySQL, SQLite) โ
โ - AWS S3 (cloud archive) โ
โ - Parquet (analytics) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Application Layer
log! macros from the log crateInklog API Layer
LoggerManager: Main orchestrator for all logging operationsLoggerBuilder: Fluent builder pattern for configurationSink Abstraction Layer
Core Processing Layer
Concurrency & I/O Layer
Storage & External Services Layer
Inklog is built with security as a top priority:
zeroize crateuser@example.com โ ***@***.***// Set encryption key securely from environment
std::env::set_var("INKLOG_ENCRYPTION_KEY", "base64-encoded-32-byte-key");
// Key is automatically zeroized after use
// Never hardcode keys in your application
# Run all tests with default features
cargo test --all-features
# Run tests with specific features
cargo test --features "aws,http,cli"
# Run tests in release mode
cargo test --release
# Run benchmarks
cargo bench
Inklog targets 95%+ code coverage:
# Generate coverage report
cargo tarpaulin --out Html --all-features
# Format code
cargo fmt --all
# Check formatting without changes
cargo fmt --all -- --check
# Run Clippy (warnings as errors)
cargo clippy --all-targets --all-features -- -D warnings
# Run cargo deny for security checks
cargo deny check
# Check for advisories
cargo deny check advisories
# Check for banned licenses
cargo deny check bans
# Run integration tests
cargo test --test '*'
# Run with Docker services (PostgreSQL, MySQL)
docker-compose up -d
cargo test --all-features
docker-compose down
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
# Clone repository
git clone https://github.com/Kirky-X/inklog.git
cd inklog
# Install pre-commit hooks (if available)
./scripts/install-pre-commit.sh
# Run tests
cargo test --all-features
# Run linter
cargo clippy --all-features
# Format code
cargo fmt --all
git checkout -b feature/amazing-feature)cargo test --all-features)cargo clippy --all-features)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)thiserror for error typesanyhow for error contextscargo fmt before committingInklog wouldn't be possible without these amazing projects:
|
๐ Issues
Report bugs and issues |
๐ฌ Discussions
Ask questions and share ideas |
๐ GitHub
View source code |
If you find this project useful, please consider giving it a โญ๏ธ!
Built with โค๏ธ by Inklog Team
ยฉ 2026 Inklog Project. All rights reserved.