Skip to main content

HexaLog is a logging port and set of opinionated adapters meant to simplify using a logger in a hexagonal architecture.

Project description

HexaLog

HexaLog is a logging port and set of opinionated adapters meant to simplify using a logger in a hexagonal architecture.

Why

In hexagonal architecture dependencies external dependencies should be injected to adapters and the service at runtime. This means business logic doesn't directly depend on external concerns which can (arguably) make code easier to test and maintain. A logger is an external dependency, therefor it to can be passed into a service or adapter at runtime.

HexaLog Example

Installation

pip install hexalog

Usage

For production environments hexalog wraps structlog and provides a structlog adapter.

From development environments hexalog wraps the standard library logging module and provides a logging adapter.

If you have some service or adapter then make the logger port a dependency of that class:

from hexalog.ports import Logger

class SomeService:
    def __init__(self, logger: Logger):
        self.logger = logger

    def do_something(self):
        self.logger.info("Doing something")

Then in your entrypoint to the application where you wire up your dependencies you can inject a logger like so:

import os

from some_service import SomeService
from hexalog.adapters.struct_logger import StructLogger

log_level = os.getenv("LOG_LEVEL", "DEBUG")

logger = StructLogger(log_level=log_level)
# If you want to use the cli logger then you just need to inject that one
# logger = CliLogger(log_level=log_level)

service = SomeService(logger=logger)

service.do_something()

See the examples directory for more information.

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

hexalog-0.6.0.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

hexalog-0.6.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file hexalog-0.6.0.tar.gz.

File metadata

  • Download URL: hexalog-0.6.0.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for hexalog-0.6.0.tar.gz
Algorithm Hash digest
SHA256 3e858568b5d58a0e469cafab986f115e9af42bbfe4264cf2631ce42403d9ee5c
MD5 4ae962bf721b300db63c131c3a933a9c
BLAKE2b-256 59626c4366ba7aa50b004be82db5e3657a3a6006d6d708803b1ec37d4e605381

See more details on using hashes here.

File details

Details for the file hexalog-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: hexalog-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 4.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for hexalog-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c262564ed87bd838e6f3c611c39e87db759c13d00eae1da5188d86d483ddfb33
MD5 b3a5f06a19ed6707ce20ebd30bbb570d
BLAKE2b-256 78e78389c87490f3e9f3dffe158064e2ec86605160c00177eaf0ee8508b60fc9

See more details on using hashes here.

Supported by

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