Dependency-injection friendly logging utilities with colorized console output.
Project description
📘 color-logger-utils
color-logger-utils は、環境変数でログレベル・ログファイルを柔軟に切り替えられる 依存注入フレンドリーな Python ログユーティリティです。
- ✔ カラー付きコンソール出力(ANSI Escape)
- ✔ LOG_LEVEL / LOG_FILE_PATH で挙動を完全制御
- ✔ 既存ロガーがある場合は再設定せず “尊重” して再利用
- ✔ DI(依存注入)デコレーターで logger を自動注入
- ✔ ログディレクトリは自動作成され、初期設定不要
Python 標準 logging を使ったまま、最小限のコード変更で強力なロギング基盤を導入できます。
🚀 Installation
uv add color-logger-utils
# または
pip install color-logger-utils
🔧 Quick Start
1. シンプルにロガーを取得して使う
from logger_utils.logger_factory import get_logger
logger = get_logger("my-app")
logger.info("Hello world!")
logger.debug("This will be hidden unless LOG_LEVEL=DEBUG")
2. デコレーターで logger を自動注入
from logger_utils import with_logger
@with_logger(name="my-service")
def main(logger):
logger.info("Injected logger works!")
main()
関数が logger 引数を受け取れる場合、自動的に渡されます。
🌱 Environment Variables
color-logger-utils の挙動は、環境変数で完全に制御できます。
🔸 LOG_LEVEL
ログレベルを指定します。
export LOG_LEVEL=DEBUG
サポート値(大文字・小文字問わず):
| 値 | 対応レベル |
|---|---|
| DEBUG | logging.DEBUG |
| INFO | logging.INFO |
| WARN / WARNING | logging.WARNING |
| ERROR | logging.ERROR |
| CRITICAL | logging.CRITICAL |
| 不正な値 | INFO にフォールバック |
内部では map_level() で安全にマッピングされます。
🔸 LOG_FILE_PATH
ログ出力パスを制御します。
export LOG_FILE_PATH=/var/log/my_app/
挙動は以下のように分岐します:
| LOG_FILE_PATH の値 | 解釈 |
|---|---|
| 未設定 / 空文字 | logs/app.log を使用(自動作成) |
| 既存ディレクトリ | その中の app.log を使用 |
/ or \ で終わるパス |
ディレクトリ扱い → app.log を付与 |
| ファイルパス | そのファイルに出力 |
内部では _resolve_log_path_from_env() が全てハンドルします。
🧠 Design & Behavior
✔ 既存ロガーを尊重して再設定しない
logging.getLogger(name) にすでにハンドラが付いている場合:
- 環境変数を無視
- 既存設定をそのまま利用
という「安全な挙動」を取ります。
これにより、アプリやフレームワーク側でロギング設定を行っている場合も、 本ライブラリが壊すことはありません。
✔ DI(依存注入)デコレーターの仕組み
@with_logger(name="service")
def fn(logger):
logger.info("ok")
logger引数がある → kwargs に自動注入- ない → その関数の モジュール全体に
loggerを注入
という 2 段構えの実装になっています。
✔ カラー付きコンソール出力
custom_formatter.py により、ログレベルに応じて ANSI カラーが付与されます。
例:
- DEBUG → 灰色
- INFO → 青 / 緑
- WARNING → 黄色
- ERROR → 赤
- CRITICAL → 赤背景
⚠️ 注意(Windows): 古い Windows コンソールでは ANSI カラーが無効な場合があります。 Windows Terminal / PowerShell では問題ありません。
🧪 Testing
このパッケージは pytest を前提としています。
実行
uv run pytest
テストポリシー(仕様と一致)
✔ map_level が文字列/レベル番号/不正値を期待通り扱う
✔ LOG_FILE_PATH の全分岐(未設定 / ディレクトリ / ファイル)
✔ with_logger が logger を注入する
✔ 既存ロガーがいる場合の再利用
✔ ログ出力パスが自動生成される
📂 Project Structure
標準的な src レイアウト を採用しています。
project/
├── pyproject.toml
├── README.md
├── src/
│ └── logger_utils/
│ ├── __init__.py
│ ├── constants.py
│ ├── custom_formatter.py
│ ├── level_mapper.py
│ ├── logger_factory.py
│ └── logger_injector.py
└── tests/
├── test_level_mapper.py
├── test_log_path_resolver.py
└── test_with_logger.py
📦 Release
PyPI 公開は次の通り。
uv build
uv publish --token pypi-xxxx
📄 License
MIT License
Project details
Release history Release notifications | RSS feed
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 color_logger_utils-0.1.0.tar.gz.
File metadata
- Download URL: color_logger_utils-0.1.0.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bdbd764038c8ad35fafa34203998e2306e6e496947606730afeff9f73eccf73
|
|
| MD5 |
f8ae24943f44cf352b0cbf19d03d69de
|
|
| BLAKE2b-256 |
434889e110c0d66659722f7ebeff4adaec8067748ce4ead395fc04f5e0c87963
|
File details
Details for the file color_logger_utils-0.1.0-py3-none-any.whl.
File metadata
- Download URL: color_logger_utils-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc4559c1c0bfdd76b5b77cb23703315f1a46b75455bac226225b9952ab8d7b49
|
|
| MD5 |
a16e4bd61512e5cd12dbf83866e9bb8a
|
|
| BLAKE2b-256 |
9e07c5604303935551af01315c8eb031b215eabc1d319e1734d7d2ad45809ca7
|