Python logging library that works with JSON
Project description
krill
krill はプランクトンの一種です。PYPI にすでに krill というパッケージが存在していたため、c_krill という名前にしました。
このパッケージには 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 ファイルから検索を実行します。keyとsubkeyの内部状態を保持します。
パラメータ
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b75085a65ff23c98166ca863ccd91f3d300efc9f01b103c11892d43dc4fdd188
|
|
| MD5 |
21cb473b14e885638474091327e9127f
|
|
| BLAKE2b-256 |
b3a3e8993598897303f5f173c3b4103d0aef0ec74e1a50eaff189e6676577933
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d50518ccecd8d05f45626634717963fa41a2dee8061ca6fea082fac63747db1d
|
|
| MD5 |
f7f886883a74a9711b56930da0a30075
|
|
| BLAKE2b-256 |
9ed06ac54607a147febdf676d2b33f62189253be7a6d7fa3e87cfaa209d7cdaf
|