Skip to content

morington/kitstructlog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kitstructlog

PyPI version Python Versions License: MIT

A superstructure over structlog that simplifies the configuration and use of structured logging in Python.


✨ Features

  • Simple declaration of project loggers via dataclass-like syntax
  • Automatic setup of logging + structlog
  • Developer-friendly console output or JSON structured logs (depending on mode)
  • Extensible processors chain (timestamps, stack info, caller details, etc.)
  • Support for multiple named loggers in one place

📦 Installation

pip install kitstructlog

🚀 Quick Start

Basic usage

import structlog
from kitstructlog import InitLoggers, LoggerReg

class Loggers(InitLoggers):
    app = LoggerReg(name="APP", level=LoggerReg.Level.INFO)
    db = LoggerReg(name="DATABASE", level=LoggerReg.Level.DEBUG)

# Initialize
loggers = Loggers(developer_mode=True)

# Use logger
logger = structlog.getLogger(Loggers.app.name)
logger.info("Application started", version="1.0.0")

JSON logging

import structlog
from kitstructlog import InitLoggers, LoggerReg

class Loggers(InitLoggers):
    app = LoggerReg(name="APP", level=LoggerReg.Level.INFO)
    access = LoggerReg(name="ACCESS", level=LoggerReg.Level.INFO)

# developer_mode=False => JSON output
loggers = Loggers(developer_mode=False)

logger = structlog.getLogger(Loggers.access.name)
logger.info("Request handled", status=200, path="/login")

Example JSON output:

{
  "timestamp": "2025-09-21 03:09:46",
  "level": "info",
  "logger": "json_logging:logger:14",
  "_msg": "Request handled",
  "status": 200,
  "path": "/login"
}

Multiple loggers

import structlog
from kitstructlog import InitLoggers, LoggerReg

class Loggers(InitLoggers):
    auth = LoggerReg(name="AUTH", level=LoggerReg.Level.DEBUG)
    router = LoggerReg(name="ROUTER", level=LoggerReg.Level.INFO)
    utils = LoggerReg(name="UTILS", level=LoggerReg.Level.DEBUG)

loggers = Loggers(developer_mode=True)

auth_logger = structlog.getLogger(Loggers.auth.name)
auth_logger.debug("Checking token", token="abc123")

router_logger = structlog.getLogger(Loggers.router.name)
router_logger.info("New request", path="/api/v1/resource")

📜 License

MIT License — see LICENSE for details.

About

An extension to structlog that simplifies the configuration and use of structured logging in Python.

Resources

License

Stars

Watchers

Forks

Contributors

Languages