Skip to main content

Python logging library that works with JSON

Project description

krill

API Reference

This module provides a ctypes-based interface to a Zig-made shared library for JSON‑based key→subkey lookups, and a custom logging.Logger subclass that records identifiers retrieved from that library.


Classes

KrillCore

KrillCore(json_path: str, key: str, subkey: str)

Description Calls into the Zig-based shared library via ctypes to perform lookups from a JSON file. Maintains internal state for key and subkey.

Parameters

  • json_path (str): Path to the JSON file containing nested key→subkey mappings.
  • key (str): Primary lookup key.
  • subkey (str): Secondary lookup key.

Attributes

  • json_path (str)
  • key (str)
  • subkey (str)
  • buf_size (int): Size of the output buffer (default: 256).

Methods

  • setSubkey(subkey: str) -> None

    • Set the secondary lookup key for subsequent calls.
  • _bytes_from_string(s: str) -> bytes

    • Encode a Python string to UTF‑8 bytes.
  • find() -> Optional[str]

    • Perform the lookup in the shared library and return the matching string (or None if not found).

KrillLogger

class KrillLogger(logging.Logger)

Description A logging.Logger subclass that integrates with KrillCore to optionally record subkey identifiers on each log call.

Attributes

  • _krill (Optional[KrillCore]): Attached KrillCore instance (set by setup_logger).
  • alloc_id_list (list[Optional[str]]): History of identifiers retrieved from KrillCore.

Methods

  • getSubKeyList() -> list[Optional[str]]

    • Return the full list of recorded subkey identifiers.
  • getLastSubkey() -> Optional[str]

    • Return the most recently recorded subkey identifier (or None).
  • debug(msg, identifier: bool=False, *args, **kwargs)

  • info(msg, identifier: bool=False, *args, **kwargs)

  • warning(msg, identifier: bool=False, *args, **kwargs)

  • error(msg, identifier: bool=False, *args, **kwargs)

  • critical(msg, identifier: bool=False, *args, **kwargs)

    Each logging method accepts an extra identifier flag. If True and a KrillCore instance is attached, it will:

    1. Call KrillCore.setSubkey(msg) with the log message.
    2. Call KrillCore.find() and append the result to alloc_id_list.

Functions

setup_logger

def setup_logger(
    name: str,
    json_path: str,
    level: int = logging.INFO
) -> KrillLogger:

Description Configure the root logging system to use KrillLogger, attach a KrillCore instance, and return the configured logger.

Parameters

  • name (str): Logger name (also used as the primary key for lookups).
  • json_path (str): Path to the JSON file for KrillCore.
  • level (int, optional): Logging level (default: logging.INFO).

Returns

  • KrillLogger: Configured logger with a StreamHandler and attached KrillCore.

Sample Usage

import logging
from krill import KrillCore, KrillLogger, setup_logger

API_NAME  = 'API_ROOT_ID'
JSON_PATH = 'logger_output.json'

# Initialize the logger
logger = setup_logger(
    name=API_NAME,
    json_path=JSON_PATH,
    level=logging.DEBUG
)

# Log messages with subkey tracking enabled
logger.info("hello", identifier=True)
logger.debug("debug message", identifier=True)
logger.warning("warning message", identifier=True)
logger.error("error message", identifier=True)
logger.critical("critical message", identifier=True)

# Inspect recorded identifiers
print("SubKey List:", logger.getSubKeyList())
print("Last SubKey:", logger.getLastSubkey())
  • Step-by-step
    1. Call setup_logger() to create a KrillLogger with attached KrillCore.
    2. Pass identifier=True to any log call to record the JSON lookup result for the message.
    3. Use getSubKeyList() or getLastSubkey() to retrieve identifiers collected so far.

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

c_krill-0.0.8.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

c_krill-0.0.8-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file c_krill-0.0.8.tar.gz.

File metadata

  • Download URL: c_krill-0.0.8.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for c_krill-0.0.8.tar.gz
Algorithm Hash digest
SHA256 06ad69e503bd2ff60eb8798b68b7bf199ee01547052401f892e0521a6129f0f1
MD5 69ff55f3e1bbe00475b22ac9508a66f9
BLAKE2b-256 78bac97d66c4796ebf8af936ca3e2ef5c7a162020f4cf9a4dd515d308a6bac1e

See more details on using hashes here.

File details

Details for the file c_krill-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: c_krill-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for c_krill-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 4cfce34ee61702ce61ac48b7497d552b793d36bff5a1fcbc63e51654bbc3540a
MD5 e64a7d3e4e45e5e6e6df9d62ff212b7e
BLAKE2b-256 c23a30198e733624d7365208ff89148a588a94ae32ddaa9dd000b3f694d38be6

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