Skip to main content

A custom logging utility and other utilities with Rich console output, file handling, Slack notification, etc.

Project description

agesuta

README.txtはAIによる生成ファイルです。(README.txt is a file generated by AI.)

Python標準のloggingモジュールをベースにしたカスタムロギングユーティリティです。richによる色付きコンソール出力、カスタムローテーションハンドラによるファイルロギング、ログファイルのエンコーディング処理機能を備えています。

インストール

ロギング機能および設定管理機能のみを使用する(オフライン環境や、余計な外部依存パッケージをインストールしたくない)場合:

pip install agesuta

Slack通知連携機能(SlackPoster)も併せて使用したい場合:

pip install agesuta[slack]

使用方法

基本的な使用例を以下に示します:

import logging
from agesuta import CustomLogger, log_decorator

# ロガーの初期設定を行うインスタンスを作成します
# これにより、ルートロガーにハンドラが設定されます
Cl_logger = CustomLogger(
    flag_datelog=False, # 日付ベース of 単一ログファイルにする場合は True に設定
    dir_path="./Log",
    log_encode="utf-8",
    showlevel="INFO", # コンソール出力の最小レベル
    maxBytes=5 * 1024 * 1024, # ログファイルを5MBでローテーション
    backupCount=5 # バックアップファイルを最大5世代保持
)
Cl_logger.log_main() # ロギング設定を適用します

# 標準のlogging.getLogger()を使ってロガーインスタンスを取得します
# これは Cl_logger.log_main() で設定されたハンドラを使用します
logger = logging.getLogger(__name__)

logger.debug("これはデバッグメッセージです。")
logger.info("これは情報メッセージです。")
logger.warning("これは警告メッセージです。")
logger.error("これはエラーメッセージです。")
logger.critical("これはクリティカルメッセージです。")

# log_decorator の使用例
# from agesuta import log_decorator # パッケージ名に合わせて変更してください

# @log_decorator(logger)
# def my_function(arg1, arg2):
#     logger.info("関数の中で何か処理しています")
#     return arg1 + arg2

# result = my_function(10, 20)
# print(f"関数の結果: {result}")

flag_datelogFalse の場合、異なるレベル(例: my_script_0_debug.log, my_script_1_info.log など)ごとに個別のログファイルが dir_path に作成されます。 flag_datelogTrue の場合、日付を含む単一のログファイル(例: my_script_YYYY-MM-DD.log)が作成されます。

CustomLogger パラメータ

  • flag_datelog (bool): Trueの場合、日付ベースのログファイル命名規則(basename_YYYY-MM-DD.log)を使用し、CustomDateRotatingFileHandlerを使用します。False(デフォルト)の場合、レベルベースのログファイル命名規則(basename_level.log)を使用し、CustomLevelRotatingFileHandlerを使用します。
  • dir_path (str): ログファイルが保存されるディレクトリです(デフォルト: ./Log)。
  • log_encode (str): ログファイルのエンコーディングです(デフォルト: "utf-8")。初期化時に、異なるエンコーディングの既存ログファイルは変換されます。
  • maxBytes (int): ログファイルがローテーションされるまでの最大バイト数です(デフォルト: 10 * 1024 * 1024 バイト、つまり 10MB)。
  • backupCount (int): ローテーション後に保持するバックアップログファイルの数です(デフォルト: 10)。
  • showlevel (str): コンソール(RichHandlerを使用)に表示するログの最小レベルです。 "DEBUG", "INFO"(デフォルト), "WARNING", "ERROR", "CRITICAL", "NOTSET" を受け付けます。大文字小文字は区別されません。
  • flag_unnecessary_loggers_to_error (bool): True(デフォルト)の場合、一般的で詳細なサードパーティライブラリ(例: werkzeug, urllib3, httpx など)のロガーレベルを ERROR に設定し、コンソールのノイズを減らします。

カスタムファイルハンドラ

このパッケージには、logging.handlers.RotatingFileHandler をベースにしたカスタムハンドラが含まれています:

  • NoColorFormatter: ANSIエスケープシーケンスを取り除くロギングフォーマッターです。RichHandler使用時のプレーンテキストログファイルに有用です。
  • CustomLevelRotatingFileHandler: サイズベースのローテーションを意図したカスタムハンドラで、flag_datelogFalse の場合に使用されます。
  • CustomDateRotatingFileHandler: 日付を意識した命名規則を持つサイズベースのローテーションを意図したカスタムハンドラで、flag_datelogTrue の場合に使用されます。日付が変わると自動的に新しい日付のファイルへ切り替わります。

log_decorator

関数への入退室およびエラーを自動的にDEBUGレベルとERRORレベルでログに記録するためのシンプルなデコレーター(log_decorator)が提供されています。

ライセンス

このプロジェクトはMITライセンスの下で提供されます - 詳細については LICENSE ファイルを参照してください。

変更履歴 (0.1.20 / 2026-07-12)

公開ライブラリとしての正しさを高めるための修正を行いました。

修正内容

  • 依存関係: setup.pyinstall_requirestzdata を追加。zoneinfo を使用するため、これが無いとタイムゾーンデータを持たない環境(Windows 等)で import agesuta 自体が失敗していた不具合を修正。
  • 対応 Python: zoneinfo(Python 3.9+)に合わせ python_requires>=3.9 に修正(従来の 3.6〜3.8 表記を是正)。
  • com.py: set_logdir(encoding=...) が別属性に代入され効かなかった不具合を修正。未使用インポート・bare except の整理。
  • configmanager.py: 既定引数の副作用(config_path のインポート時評価、可変デフォルト type_dic={})を修正。設定読込時に optionxform=str を適用し、大文字を含むキーが書込→読戻で失われる不整合を修正。
  • slackapi.py: get_channelid のチャンネルID判定を厳密化し、チャンネル名の誤検知を防止。未使用インポートの整理。

Antigravityによる改善プロジェクト (2026-05-23)

ライブラリの全体的なスキャンを行い、堅牢性と使いやすさを向上させるための改善タスクを定義し、実行しました。

改善タスク一覧

  • 開発仮想環境(venv)の再作成(Python 3.13 への追従)
  • com.py: CustomLevelRotatingFileHandler のファイル名パースバグ修正(ファイル名に . が含まれる場合の崩壊防止)
  • com.py: CustomDateRotatingFileHandler の日付またぎ時のローテーション不整合修正(日付変更時に自動で新ファイルを作成)
  • com.py: ファイル操作時の Windows PermissionError に対する例外ハンドリングの強化
  • com.py: クラス/インスタンスメソッドにも対応した高度な log_decorator の再実装
  • slackapi.py: get_channelid でチャンネルIDが直接渡された際の即時返却対応(API呼び出しの削減)
  • slackapi.py: get_channelid のページネーション(100件超のチャンネル対応)
  • slackapi.py: 改善された log_decorator の適用とロギングの最適化
  • 全体の black フォーマット適用とテストコードによる動作確認

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

agesuta-0.1.20.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

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

agesuta-0.1.20-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file agesuta-0.1.20.tar.gz.

File metadata

  • Download URL: agesuta-0.1.20.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for agesuta-0.1.20.tar.gz
Algorithm Hash digest
SHA256 8a79855d0887a3a64ebf2dcd3595f7c36caa7f279de6a0c830401010d7975102
MD5 abf5fc47f9ec3e7451754454fe2e4ae0
BLAKE2b-256 249cec5f316e93d64aa06ef32d4fda3d3937de913627feb903e847be5e51456a

See more details on using hashes here.

File details

Details for the file agesuta-0.1.20-py3-none-any.whl.

File metadata

  • Download URL: agesuta-0.1.20-py3-none-any.whl
  • Upload date:
  • Size: 25.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for agesuta-0.1.20-py3-none-any.whl
Algorithm Hash digest
SHA256 13403de91a6575a50fe6c54e27c9beeb434457d59e560082e6c1b26182e90eaf
MD5 b365fc52a81858efc4940d7627eff2fc
BLAKE2b-256 4eae74d7002777ed9372a9193ce09e640fd05bfba466465c767fec1f19003c46

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