| Crates.io | ccb |
| lib.rs | ccb |
| version | 0.1.1 |
| created_at | 2025-08-11 08:14:49.500796+00 |
| updated_at | 2025-08-11 08:37:00.514693+00 |
| description | A beautiful, terminal-focused structured logger inspired by charmbracelet/log |
| homepage | https://github.com/liuzhen9320/ccb |
| repository | https://github.com/liuzhen9320/ccb |
| max_upload_size | |
| id | 1789762 |
| size | 57,806 |
๐ A beautiful, terminal-focused structured logger for Rust
CCB brings elegance and visual appeal to the Rust ecosystem. It is designed for command-line interface (CLI) applications that want to achieve beautiful, readable, and structured log output.
2006-01-02 03:04:05.789 formatwith(key, value)Add CCB Logger to your Cargo.toml:
[dependencies]
ccb = "0.1.0"
use ccb::{info, warn, error, debug, trace};
fn main() {
// Simple logging
info!("Application started");
warn!("This is a warning");
error!("Something went wrong");
// With structured fields
info!("User login", "user_id", "12345", "ip", "192.168.1.100");
error!("Database error", "table", "users", "error", "connection timeout");
}
use ccb::{Logger, Level, set_global_logger};
fn main() {
// Create a custom logger
let logger = Logger::new()
.with_level(Level::Debug)
.with_colors(true)
.with_timestamp(true)
.with("service", "my-app")
.with("version", "1.0.0");
// Set as global logger
set_global_logger(logger);
// Now all macro calls will use the configured logger
debug!("Debug message with context");
info!("Request processed", "method", "GET", "path", "/api/users");
}
use ccb::{Logger, Level, Config};
fn main() {
// Custom configuration
let config = Config {
level: Level::Trace,
use_colors: false, // Disable colors for CI/CD
show_timestamp: true,
};
let logger = Logger::with_config(config)
.with("component", "auth")
.with("environment", "production");
// Direct logger usage
logger.trace("Entering function", &[("fn", "authenticate")]);
logger.info("Authentication successful", &[("user", "alice")]);
logger.error("Rate limit exceeded", &[("ip", "192.168.1.1"), ("attempts", "10")]);
}
2024-01-15 14:30:25.1234 INFO Application started
2024-01-15 14:30:25.1235 WARN Configuration file not found path=config.toml
2024-01-15 14:30:25.1236 INFO User login user_id=12345 ip=192.168.1.100
2024-01-15 14:30:25.1237 ERRO Database connection failed error=timeout retry_count=3
2024-01-15 14:30:25.1238 DEBG Cache hit key=user:12345 ttl=300
CCB supports five log levels with four-character alignment:
| Level | Code | Color | Description |
|---|---|---|---|
| Trace | TRCE |
Cyan | ๐ Detailed tracing information |
| Debug | DEBG |
Blue | ๐ Debug information for developers |
| Info | INFO |
Green | โน๏ธ General information messages |
| Warn | WARN |
Yellow | โ ๏ธ Warning messages |
| Error | ERRO | Red | โ Error conditions |
with_level(level) - Set minimum log levelwith_colors(bool) - Enable/disable colored outputwith_timestamp(bool) - Show/hide timestampswith(key, value) - Add context key-value pairCCB automatically detects if output is going to a terminal and enables colors accordingly. You can override this behavior:
let logger = Logger::new().with_colors(false); // Force disable colors
Run the test suite:
cargo test
Run tests with output:
cargo test -- --nocapture
Check out the examples/ directory for more usage patterns:
cargo run --example basic_usage
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)This project is licensed under the MIT License - see the LICENSE file for details.