0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シンプルなロギングライブラリ for Python

Posted at

nysimplelog

Python 3.10+

nysimplelog は、logging のためのシンプルな Python ライブラリです。標準の Python logging.basicConfig に依存せず、コンソールとファイルの両方にログを出力します。異なるモジュール間でもログ設定を構成できます。

1. 必要条件

  • Python 3.10 以上(完全な型ヒントサポートのため)
  • tzdata(Windows の場合、タイムゾーンのサポートに必要)

2. インストール

pip でインストールします:

pip install nysimplelog

3. 使用方法

3.1 パッケージのインポート

メインプログラム:

from logging import getLogger, WARNING, INFO, DEBUG
from nysimplelog import initialize_simple_logger

モジュール:

from logging import getLogger

3.2 ロガーの作成

指定した名前でロガーを返します。ロガー名に __name__ を使うことでモジュール名を使用できます。

logger = getLogger(__name__)
  or
logger = getLogger("example")

3.3 シンプルロガーの初期化

カスタム設定でロガーを初期化します。この関数は設定済みのロガーを返します。

logger = initialize_simple_logger(
    name="example",
    log_dir="logs",
    fmt="%(asctime)s %(levelname)s %(name)s - %(message)s", # カスタムフォーマット
    datefmt="%Y-%m-%dT%H:%M:%S", # カスタム日付フォーマット
    tz="Asia/Tokyo",
    level="DEBUG",
    file_handler_level=WARNING, # ファイルは警告以上を記録
    maxBytes=1024 * 1024, # 1MB(デフォルトは10MB)
    backupCount=5, # 5つのログファイル(デフォルトは2)
)

オプション

パラメータ 説明
name ロガーの名前。
log_dir ログファイルのディレクトリ。デフォルト: "logs"
filename ログファイル名。デフォルト: "{log_dir}/{name}.log"
fmt ログメッセージのフォーマット。デフォルト: "%(asctime)s %(levelname)s %(name)s - %(message)s"
datefmt 日付フォーマット。デフォルト: ISO-8601(例: "2023-05-27T07:20:32.798+09:00")。
tz ログタイムスタンプのタイムゾーン(例: "UTC", "Asia/Tokyo")。デフォルト: None(ローカル時間を使用)。
formatter カスタムフォーマッター。デフォルト: None(ISO8601_Formatter を使用)。
level ロガーレベル(整数または文字列)。デフォルト: logging.WARNING
stream_handler_level ストリームハンドラーのレベル。デフォルト: None の場合、level パラメータが使用されます。
file_handler_level ファイルハンドラーのレベル。デフォルト: None の場合、level パラメータが使用されます。
maxBytes ローテーション前の最大ファイルサイズ。デフォルト: 10MB
backupCount バックアップログファイルの数。デフォルト: 2

Note: Windows で、tz パラメータを使用する場合、特定のタイムゾーンを利用できるように pip install tzdata を実行してください。

3.4 ログメッセージの記録

詳細は Python のログドキュメント を参照してください。標準のログメソッドを使用します:

logger.debug("Debug message")
logger.info("Info message")
logger.warning("Warning message")
logger.error("Error message")

4. 使用例

4.1 ディレクトリ構造

examples/example_usage.py
examples/mypackage/__init__.py

完全なサンプルプロジェクトは、GitHub リポジトリの examples フォルダ を参照してください。

4.2 モジュールの例

# examples/mypackage/__init__.py
from logging import getLogger

logger = getLogger(__name__)

def hello():
    logger.debug("Hello, world!")

4.3 メインプログラム

# examples/example_usage.py
from logging import getLogger, WARNING, INFO, DEBUG
from nysimplelog import initialize_simple_logger

import mypackage

# ストリームとファイルで異なるレベルのメインロガー
logger = initialize_simple_logger(
    name="main",
    level=DEBUG,
    stream_handler_level=INFO,  # コンソールは情報以上を記録
    file_handler_level=WARNING  # ファイルは警告以上を記録
)

# モジュール固有のロガー
initialize_simple_logger(name=mypackage.__name__, level=DEBUG)

logger.debug("This is a debug message")  # 表示されない
logger.info("This is an info message")   # レベルが許可する場合、ファイルにのみ
logger.warning("This is a warning")      # コンソールとファイル
mypackage.hello()                        # mypackage ロガーに依存

4.4 出力

Console:

2025-03-02T18:01:28.413+09:00 INFO main - This is an info message
2025-03-02T18:01:28.414+09:00 WARNING main - This is a warning
2025-03-02T18:01:28.414+09:00 DEBUG mypackage - Hello, world!

File logs/main.log:

2025-03-02T18:01:28.414+09:00 WARNING main - This is a warning

ファイルは logs/ にローテーション付きで保存されます(例: main.log, main.log.1 など)。

5. 機能

  • 異なるモジュール向けにログを設定可能。
  • 標準出力とファイル出力をサポート。
  • ログファイルのローテーションをサポート。
  • デフォルトの日付フォーマットとして ISO-8601 を使用。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?