Skip to main content

FlexiLogger

FlexiLogger is a customizable Python logging library that provides enhanced features for handling logs, including colorized console outputs, structured JSON logging, log rotation, and context binding.

Features

  • Structured JSON Logging: Production-ready format for ELK/Datadog/Splunk.
  • Context Binding: Add contextual data (user_id, request_id) to logs easily.
  • Automatic Log Rotation: Prevents log files from growing indefinitely.
  • Colorized Console: Better readability during development.
  • Dynamic Configuration: Configure via environment variables.
  • Timezone Support: UTC, Local, or custom offsets.

Installation

You can install FlexiLogger using pip:

pip install FlexiLogger

Usage

Basic Usage

To use FlexiLogger in your project:

from FlexiLogger import Logger

# Standard usage (defaults to UTC)
logger = Logger(__file__, log_file_path="app.log")
logger.info("This is an info message")

# Custom timezone and date format
logger_tz = Logger("CustomLogger", timezone="UTC+1", date_format="%Y-%m-%d %H:%M:%S")
logger_tz.info("This message uses UTC+1 and ISO format")

JSON Logging and Context Binding (Production Mode)

Enable JSON logging for machine-readable output and bind context to track requests:

# Enable JSON format (or set env LOGGER_JSON_FORMAT=true)
logger = Logger("AppLogger", log_file_path="app.json", json_format=True)

# Bind context (e.g., at the start of a request)
log = logger.bind(request_id="req-123", user_id=42)

log.info("Processing payment")
# Output: {"timestamp": "...", "level": "INFO", "message": "Processing payment", "request_id": "req-123", "user_id": 42, ...}

log.warning("Transaction slow", duration_ms=500)
# Output: {"timestamp": "...", "level": "WARNING", "message": "Transaction slow", "request_id": "req-123", "user_id": 42, "duration_ms": 500, ...}

Log Rotation

Prevent disk overflow by setting max size and backup count:

logger = Logger(
    "RotationLogger",
    log_file_path="app.log",
    max_bytes=10 * 1024 * 1024, # 10 MB
    backup_count=5
)

Advanced Traceback Handling

FlexiLogger provides a GetTraceback class for managing exceptions:

import os
from FlexiLogger import Logger, GetTraceback

logger = Logger(__file__)
traceback_handler = GetTraceback(logger)

try:
    1 / 0
except Exception as e:
    traceback_handler.error("An error occurred", print_full_exception=True)

Environment Variables

FlexiLogger uses several environment variables to customize its behavior:

Variable Name Description Default Value
LOG_PATH Specifies the path to the log file. If not set, logging to a file is disabled. None
LOGGER_JSON_FORMAT Enables JSON output format. Values: true/1 or false/0. false
LOG_TRACEBACK_PATH Specifies the path where traceback will be saved. If not set, the file defined in the Logger will be used. None
LOGGER_CONSOLE_LOG_LEVEL Sets the console log level. Acceptable values: DEBUG, INFO, WARNING, ERROR, CRITICAL. DEBUG
LOGGER_FILE_LOG_LEVEL Sets the file log level. Acceptable values: DEBUG, INFO, WARNING, ERROR, CRITICAL. DEBUG
LOGGER_TIME_INFO Enables or disables timestamps in log messages. Values: true/1 or false/0. true
LOGGER_TIMEZONE Sets the timezone for timestamps. Values: UTC (default), LOCAL, UTC+3, UTC-05:00, etc. UTC

Example

Set the environment variables before running your script:

export LOG_PATH="app.log"
export LOGGER_JSON_FORMAT="true"
export LOGGER_CONSOLE_LOG_LEVEL="INFO"
export LOGGER_TIMEZONE="UTC+3"

License

FlexiLogger is licensed under the MIT License. See the LICENSE file for details.

Release files for FlexiLogger 1.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for FlexiLogger 1.0.6
File Size Uploaded
flexilogger-1.0.6.tar.gz 11.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for FlexiLogger 1.0.6
File Interpreter ABI Platform
flexilogger-1.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 21.6 kB

Release files / flexilogger-1.0.6.tar.gz

Download URL flexilogger-1.0.6.tar.gz
Size 11.8 kB
Tags Source
SHA-256 checksum
How to use checksums
168d539a11d6677dae5bd525bf9b782883cf4eb9ff1a0a85ce6cff2daf2c499d
BLAKE2b-256 checksum
How to use checksums
51e85086e3ca81df8074ec4a8072a8996e961e55ee3ff9bc5fdda1d111f5040d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / flexilogger-1.0.6-py3-none-any.whl

Download URL flexilogger-1.0.6-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ecc454d1c99c644924433a3e5fa9755dfe66c30912da2a1e4def010a438b81ad
BLAKE2b-256 checksum
How to use checksums
ea89270e73fce4a90c0e8773b18a9d9b1ce2767ae0ab24d925833dfc4d208372
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.0.6 This release

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page