pytilpack.logging¶
pytilpack.logging
¶
ログ関連。
ContextFilter(target_id)
¶
Bases: Filter
_context_idと一致するログだけを通すフィルタ。
ソースコード位置: pytilpack/logging.py
clear_exception_history()
¶
stream_handler(stream=None, level=logging.INFO, format='[%(levelname)-5s] %(message)s')
¶
標準エラー出力用のハンドラを作成。
ソースコード位置: pytilpack/logging.py
file_handler(log_path, mode='w', encoding='utf-8', level=logging.DEBUG, format='[%(levelname)-5s] %(message)s', max_bytes=None, when=None, backup_count=5)
¶
ファイル出力用のハンドラを作成。
ソースコード位置: pytilpack/logging.py
timer(name, logger=None)
¶
処理時間の計測&表示。
ソースコード位置: pytilpack/logging.py
exception_with_dedup(logger, exc, msg='Unhandled exception occurred', dedup_window=None, now=None)
¶
同一 fingerprint が dedup_window 内にあれば INFO、そうでなければ WARN で exc_info=True 付きでログ出力する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
logger
|
Logger
|
出力先ロガー |
必須 |
exc
|
BaseException
|
例外 |
必須 |
msg
|
str
|
ログメッセージ。fingerprint にも含まれる。 |
'Unhandled exception occurred'
|
dedup_window
|
timedelta | None
|
同一エラーとみなす時間幅。デフォルト 24 時間。 |
None
|
now
|
datetime | None
|
現在時刻。 |
None
|
ソースコード位置: pytilpack/logging.py
capture_context(target_logger, formatter, level=logging.INFO)
async
¶
指定ロガーに対して“この非同期コンテキストのログだけ”をStringIOへ集約する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
target_logger
|
Logger
|
ハンドラを一時的に取り付ける対象のロガー。 |
必須 |
formatter
|
Formatter
|
このキャプチャ専用のフォーマッタ。 |
必須 |
level
|
int
|
このキャプチャハンドラのログレベル。 |
INFO
|
返す:
| 名前 | タイプ | デスクリプション |
|---|---|---|
get_value |
AsyncGenerator[Callable[[], str], None]
|
これまでにバッファへ書かれた文字列を返す関数。 |
ソースコード位置: pytilpack/logging.py
jsonify(data, indent=None, truncate=True, model_dump_kwargs=None)
¶
オブジェクトをJSON文字列に変換する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
data
|
Any
|
JSON化するオブジェクト。 |
必須 |
indent
|
int | None
|
インデント幅。Noneの場合は改行なし。 |
None
|
truncate
|
bool
|
長い文字列/バイト列を省略するかどうか。 |
True
|
model_dump_kwargs
|
dict[str, Any] | None
|
pydanticモデルをdictに変換する際の追加引数。 |
None
|
戻り値:
| タイプ | デスクリプション |
|---|---|
str
|
JSON文字列。 |
ソースコード位置: pytilpack/logging.py
truncate_values(data, max_str_len=100, max_bytes_len=100, bytes_to_str=False, model_dump_kwargs=None, max_num_list_len=3)
¶
dictやlist/tuple内の長いstr/bytesを再帰的に省略する。
引数:
| 名前 | タイプ | デスクリプション | デフォルト |
|---|---|---|---|
data
|
Any
|
処理対象のデータ。 |
必須 |
max_str_len
|
int
|
文字列の最大長。 |
100
|
max_bytes_len
|
int
|
バイト列の最大長。 |
100
|
bytes_to_str
|
bool
|
bytesをstrに変換するかどうか。 |
False
|
model_dump_kwargs
|
dict[str, Any] | None
|
pydanticモデルをdictに変換する際の追加引数。 |
None
|
max_num_list_len
|
int
|
全要素が数値型(int/float)のlistの最大表示件数。超えた場合は先頭n件+"..."に省略。 |
3
|
戻り値:
| タイプ | デスクリプション |
|---|---|
Any
|
省略処理を行った新しいオブジェクト。 |