Skip to main content

Python logging library that works with JSON

Project description

krill

krill はプランクトンの一種です。PYPI にすでに krill というパッケージが存在していたため、c_krill という名前にしました。

このパッケージには 2 つの機能があります。

  1. ログの生成
  2. ログを検索

インストール

pip install c_krill

使い方

以下にサンプルコードを記載します。

# 1. ログの生成
from c_krill import generate_json

pyfile = "logger.py"
root_id = "API_ROOT_ID"
output_path = "logger_output.json"
env_identifier = True
generate_json(str(pyfile), root_id, str(output_path), env_identifier)

output_path = "logger_output2.json"
env_identifier = False
generate_json(str(pyfile), root_id, str(output_path), env_identifier)
# 2. ログを検索
import logging

from c_krill import KrillCore, KrillLogger

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

    logger = logging.getLogger(name)
    logger.setLevel(level)

    ch = logging.StreamHandler()
    ch.setLevel(level)
    formatter = logging.Formatter('%(asctime)s [%(name)s][%(levelname)s] %(message)s')
    ch.setFormatter(formatter)
    logger.addHandler(ch)

    logger._krill = KrillCore(
        json_path=json_path,
        key=name,
        subkey=""
    )

    return logger


if __name__ == "__main__":
    API_NAME  = 'API_ROOT_ID'
    JSON_PATH = 'logger_output.json'

    logger = setup_logger(API_NAME, JSON_PATH)

    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)

    print("list :", logger.getSubKeyList())
    print("last :", logger.getLastSubkey())

API リファレンス

パッケージの中身は、Zig で作成された JSON ベースのキー → サブキー検索用の共有ライブラリに対して ctypes ベースのインターフェースを提供し、そのライブラリから取得した識別子を記録するカスタムlogging.Loggerサブクラスを含みます。

KrillCore

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

ctypes経由で呼び出しを行い、JSON ファイルから検索を実行します。keysubkeyの内部状態を保持します。

パラメータ

  • json_path (str): ネストされたキー → サブキーのマッピングを含む JSON ファイルへのパス.
  • key (str): プライマリ key.
  • subkey (str): セカンダリ lookup key.

属性

  • json_path (str)
  • key (str)
  • subkey (str)
  • buf_size (int): default: 256.

KrillLogger

class KrillLogger(logging.Logger)

logging.Logger のサブクラスで、KrillCore と統合され、各ログ呼び出し時にサブキー識別子をオプションで記録します。

属性

  • _krill (Optional[KrillCore]): KrillCore インスタンス内で(setup_logger を設定 → アプリケーション側で任意設定)。
  • alloc_id_list (list[Optional[str]]): KrillCoreから取得した識別子のアロケータ。

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.11.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.11-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: c_krill-0.0.11.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.11.tar.gz
Algorithm Hash digest
SHA256 b75085a65ff23c98166ca863ccd91f3d300efc9f01b103c11892d43dc4fdd188
MD5 21cb473b14e885638474091327e9127f
BLAKE2b-256 b3a3e8993598897303f5f173c3b4103d0aef0ec74e1a50eaff189e6676577933

See more details on using hashes here.

File details

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

File metadata

  • Download URL: c_krill-0.0.11-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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 d50518ccecd8d05f45626634717963fa41a2dee8061ca6fea082fac63747db1d
MD5 f7f886883a74a9711b56930da0a30075
BLAKE2b-256 9ed06ac54607a147febdf676d2b33f62189253be7a6d7fa3e87cfaa209d7cdaf

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