Skip to main content

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.

Release files for HexaLog 0.6.0

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

Source distribution (sdist)

Source distribution for HexaLog 0.6.0
File Size Uploaded
hexalog-0.6.0.tar.gz 3.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for HexaLog 0.6.0
File Interpreter ABI Platform
hexalog-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.0 kB

Release files / hexalog-0.6.0.tar.gz

Download URL hexalog-0.6.0.tar.gz
Size 3.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3e858568b5d58a0e469cafab986f115e9af42bbfe4264cf2631ce42403d9ee5c
BLAKE2b-256 checksum
How to use checksums
59626c4366ba7aa50b004be82db5e3657a3a6006d6d708803b1ec37d4e605381
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.6

Release files / hexalog-0.6.0-py3-none-any.whl

Download URL hexalog-0.6.0-py3-none-any.whl
Size 4.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c262564ed87bd838e6f3c611c39e87db759c13d00eae1da5188d86d483ddfb33
BLAKE2b-256 checksum
How to use checksums
78e78389c87490f3e9f3dffe158064e2ec86605160c00177eaf0ee8508b60fc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.6

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.0.1

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