๐จ CCB Logger
๐ 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.
โจ Features
- ๐ฏ Semantic Log Levels: Trace, Debug, Info, Warn, Error with four-character alignment
- ๐ Automatic Colors: Beautiful colored output with smart terminal detection
- โฐ Precise Timestamps: High-precision timestamps in
2006-01-02 03:04:05.789format - ๐ Chainable Context: Add structured key-value pairs with
with(key, value) - ๐ ๏ธ Simple Macros: Easy-to-use macros with variadic arguments support
- ๐๏ธ Global Logger: Set and use a global logger instance across your application
- ๐ฑ Terminal Friendly: No icons, maximum compatibility across terminals
- โก Zero Config: Works beautifully out of the box with sensible defaults
๐ Quick Start
Add CCB Logger to your Cargo.toml:
[]
= "0.1.0"
Basic Usage
use ;
Custom Logger Configuration
use ;
Advanced Usage
use ;
๐ Output Examples
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
๐ฏ Log Levels
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 |
๐ง Configuration Options
Logger Methods
with_level(level)- Set minimum log levelwith_colors(bool)- Enable/disable colored outputwith_timestamp(bool)- Show/hide timestampswith(key, value)- Add context key-value pair
Environment Detection
CCB automatically detects if output is going to a terminal and enables colors accordingly. You can override this behavior:
let logger = new.with_colors; // Force disable colors
๐งช Testing
Run the test suite:
Run tests with output:
๐ Examples
Check out the examples/ directory for more usage patterns:
๐ค Contributing
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.
- ๐ด Fork the repository
- ๐ Create your feature branch (
git checkout -b feature/amazing-feature) - โ
Commit your changes (
git commit -m 'Add some amazing feature') - ๐ค Push to the branch (
git push origin feature/amazing-feature) - ๐ Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Inspired by charmbracelet/log โค๏ธ
- CCB has no real meaning, the name was given by a friend
- Built with โค๏ธ for the Rust community
- Thanks to all contributors! ๐
๐ Related Projects
- charmbracelet/log - The original Go implementation
- env_logger - Simple logger controlled via environment
- tracing - Application-level tracing framework