Skip to main content

A Python package from the ds-common library collection

Project description

ds-common-logger-py-lib

A Python logging library from the ds-common library collection, providing structured logging with support for extra fields, class-based loggers, and flexible configuration.

Installation

Install the package using pip:

pip install ds-common-logger-py-lib

Or using uv (recommended):

uv pip install ds-common-logger-py-lib

Features

  • Structured Logging: Extra fields included in log output
  • Logger Helper: Logger.configure() and Logger.get_logger() for consistent setup
  • Application Configuration: Prefix, format, handlers, and log levels from one place
  • Flexible Output: Update formats and prefixes at runtime
  • Custom Formatter: Extra fields are JSON-encoded when possible
  • Standard Library Compatible: Built on Python's logging module

Quick Start

Basic Usage

from ds_common_logger_py_lib import Logger

# Initialize logger configuration
Logger.configure()

# Get a logger instance
logger = Logger.get_logger(__name__)

# Log with extra fields
logger.info("Processing data", extra={"user_id": 123, "action": "process"})

Application Configuration

from ds_common_logger_py_lib import Logger
import logging

# Configure at application startup
Logger.configure(
    prefix="MyApp",
    format_string="[%(asctime)s][{prefix}][%(name)s][%(levelname)s]: %(message)s",
    level=logging.INFO
)

logger = Logger.get_logger(__name__)
logger.info("Application started")

# Update prefix at runtime
Logger.set_prefix("MyApp-session123")
logger.info("Session initialized")

Usage Examples

Setting Log Levels

from ds_common_logger_py_lib import Logger
import logging

Logger.configure(
    level=logging.DEBUG,
    logger_levels={
        "myapp.verbose": logging.DEBUG,
        "myapp.quiet": logging.WARNING,
    },
)

verbose_logger = Logger.get_logger("myapp.verbose")
quiet_logger = Logger.get_logger("myapp.quiet")

verbose_logger.debug("Debug message is visible")
quiet_logger.info("Info message is hidden")
quiet_logger.warning("Warning message is visible")

Multiple Classes with Isolated Loggers

from ds_common_logger_py_lib import Logger

class UserService:
    def create_user(self, username: str):
        logger = Logger.get_logger("services.user")
        logger.info("Creating user", extra={"username": username})

class OrderService:
    def create_order(self, user_id: int):
        logger = Logger.get_logger("services.order")
        logger.info("Creating order", extra={"user_id": user_id})

# Each class has its own logger with distinct names
user_service = UserService()
order_service = OrderService()

Requirements

  • Python 3.10 or higher

Documentation

Full documentation is available at:

Development

To contribute or set up a development environment:

# Clone the repository
git clone https://github.com/grasp-labs/ds-common-logger-py-lib.git
cd ds-common-logger-py-lib

# Install development dependencies
uv sync --all-extras --dev

# Run tests
make test

See the README for more information.

License

This package is licensed under the Apache License 2.0. See the LICENSE-APACHE file for details.

Support

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

ds_common_logger_py_lib-0.1.0a5.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

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

ds_common_logger_py_lib-0.1.0a5-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file ds_common_logger_py_lib-0.1.0a5.tar.gz.

File metadata

File hashes

Hashes for ds_common_logger_py_lib-0.1.0a5.tar.gz
Algorithm Hash digest
SHA256 e34684900e6afd01c4fb10bf01d833926324f5cbb2385cfb77c5a455df2e0a82
MD5 0227e5a05a04bda2af5383b79f526f14
BLAKE2b-256 1cfeeabb5237c73d44dc23174577e73d8456c64eb331daa51006f0ca4114b17d

See more details on using hashes here.

File details

Details for the file ds_common_logger_py_lib-0.1.0a5-py3-none-any.whl.

File metadata

File hashes

Hashes for ds_common_logger_py_lib-0.1.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 68ad595d9ba3cf55375072d9ce6a97319b7ca0a4551d464ab1bd488d9fbaece2
MD5 720e3c4c2edfec1dd21fc25eab1a9708
BLAKE2b-256 c3cfc0472c2988278a9870692a3995d57dbe13d0b10abb783345196de3129f31

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