Skip to main content

Enhanced Python logger with colorized output, TRACE/PROGRESS levels, UDP monitoring, file logging, and external config support via Loguru backend.

Project description

tracecolor

Enhanced Python logger with colorized output, TRACE/PROGRESS levels, UDP monitoring, and file logging. Powered by Loguru backend for superior performance and features.

Features

Core Features

  • Custom TRACE logging level (lower than DEBUG)
  • Custom PROGRESS logging level (between DEBUG and INFO)
  • Colorized output for different log levels
  • Rate-limiting for PROGRESS messages (once per second per call site)
  • Simple and clean API

Enhanced Features (v0.7.6)

  • Pure Loguru Backend: Superior performance and features
  • UDP Remote Monitoring: Real-time log streaming with tracecolor-monitor command
  • File Logging: Automatic rotation, compression, and retention
  • External Configuration: JSON/YAML configuration files
  • Multiple Destinations: Simultaneous logging to console, file, and UDP
  • Automatic Dependencies: Loguru installed automatically with pip install
  • Console Script: tracecolor-monitor available globally after installation
  • Enterprise Ready: Thread-safe, async support, production-grade

Installation

pip install tracecolor

This automatically installs:

  • loguru - Advanced logging backend
  • colorlog - Colorized console output

Optional Dependencies

# For YAML configuration support
pip install tracecolor[yaml]

# For development
pip install tracecolor[dev]

Usage

Basic Usage

from tracecolor import tracecolor

# Create a logger
logger = tracecolor(__name__)

# Log at different levels
logger.trace("Detailed tracing information")
logger.debug("Debugging information")
logger.progress("Progress update information (rate-limited)")
logger.info("General information")
logger.warning("Warning message")
logger.error("Error message")
logger.critical("Critical error")

Enhanced Usage (v0.6.0 Features)

from tracecolor import tracecolor

# Standard usage now automatically uses Loguru backend if available
logger = tracecolor(__name__)  # Now powered by Loguru!
logger.info("Better performance, same API")

# Enhanced features explicitly enabled
logger = tracecolor(
    name=__name__,
    enable_console=True,      # Console output (same as original)
    enable_udp=True,          # UDP remote monitoring
    enable_file=True,         # File logging with rotation
    log_dir="./logs",         # Log directory
    udp_host="127.0.0.1",     # UDP monitoring host
    udp_port=9999             # UDP monitoring port
)

# Same API as original tracecolor
logger.info("This message goes to console, file, AND UDP socket")
logger.progress("Progress messages still rate-limited, now with enterprise backend")

# Alternative: convenience function (same result)
from tracecolor import create_enhanced_logger
logger = create_enhanced_logger(__name__, enable_udp=True, enable_file=True, log_dir="logs")

# Monitor logs in real-time (separate terminal)
# tracecolor-monitor
# or: python -m tracecolor.monitor

External Configuration

Automatic Config Detection

Tracecolor automatically looks for standard config files in the current directory:

  1. tracecolor.yml (first priority)
  2. tracecolor.yaml (second priority)
  3. tracecolor.json (third priority)
# Just create tracecolor.yml in your project directory
from tracecolor import tracecolor
logger = tracecolor(__name__)  # Automatically finds and uses tracecolor.yml

Manual Config File

# Create custom_config.yml
logger = tracecolor(__name__, config_file="custom_config.yml")

Config File Formats

YAML (recommended):

log_level: TRACE
use_udp: true
udp_host: 127.0.0.1
udp_port: 9999
enable_console: true
enable_file: true
log_dir: "./logs"

JSON:

{
    "log_level": "TRACE",
    "use_udp": true,
    "udp_host": "127.0.0.1", 
    "udp_port": 9999,
    "enable_console": true,
    "enable_file": true,
    "log_dir": "./logs"
}

UDP Remote Monitoring

Monitor logs in real-time from any application using enhanced features:

# Terminal 1: Run your application with UDP logging
python your_app.py

# Terminal 2: Monitor logs in real-time
python -m tracecolor.monitor

# Or specify host/port
python -m tracecolor.monitor --host 0.0.0.0 --port 8888

# Legacy format also supported
python tracecolor/monitor.py listen 192.168.1.100 9999

The monitor displays formatted output with timestamps, log levels, and messages in real-time.

Migration Guide

From v0.5.0 to v0.6.0

Step 1: Update package (existing code continues to work)

pip install --upgrade tracecolor

Step 2: Install enhanced dependencies (optional)

pip install tracecolor[enhanced]

Step 3: Optionally enable enhanced features where needed

# Before (still works, now with Loguru backend!)
from tracecolor import tracecolor
logger = tracecolor(__name__)  # Automatically uses Loguru if available

# Enhanced features when needed
logger = tracecolor(__name__, enable_udp=True, enable_file=True, log_dir="logs")

Step 4: Add external configuration as projects mature

# Automatic config detection (looks for tracecolor.yml, tracecolor.yaml, tracecolor.json)
logger = tracecolor(__name__)  # Auto-detects config files

# Or specify custom config file
logger = tracecolor(__name__, config_file="custom_config.yml")

Color Scheme

  • TRACE: Gray (bold black)
  • DEBUG: Cyan
  • PROGRESS: Blue
  • INFO: Green
  • WARNING: Yellow
  • ERROR: Red
  • CRITICAL: Bold Red

Examples

See the examples/ directory for comprehensive usage examples:

  • basic_usage.py - Original v0.5.0 functionality
  • enhanced_features.py - New v0.6.0 features and migration guide

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tracecolor-0.7.7.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tracecolor-0.7.7-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file tracecolor-0.7.7.tar.gz.

File metadata

  • Download URL: tracecolor-0.7.7.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tracecolor-0.7.7.tar.gz
Algorithm Hash digest
SHA256 9a1175fe0bcb1647668dd057d8d87fbdb41198abda42b5634224ec828bbc62eb
MD5 ddb0a474ca69aaea51bb6a8914b757fd
BLAKE2b-256 2fcff9b5ab9117ccab7b9e89246b39b98a63940f4e4dee4fd8de22aade8b3b96

See more details on using hashes here.

File details

Details for the file tracecolor-0.7.7-py3-none-any.whl.

File metadata

  • Download URL: tracecolor-0.7.7-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tracecolor-0.7.7-py3-none-any.whl
Algorithm Hash digest
SHA256 8b7cfccd62deeb4c69fcde9c698c6a382341bdb6a80079e5f6ec170e5cc301d6
MD5 cdfffe4307635513c241834c91070f5a
BLAKE2b-256 5c065e9c2f27ed0954db89c15d542eddc28cc3bd636d276ce6a7f29d25985e3f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page