ロギングのカスタマイズ方法

Amplify-BBOpt は、内部で Python 標準の logging モジュールを使用しており、ロガー名 “amplify_bbopt” (AMPLIFY_BBOPT_LOGGER_NAME) を通じてログ出力を制御しています。このページでは、ユーザーがログ出力を柔軟に制御するための方法を紹介します。

ロガーの基本情報

  • ロガー名: “amplify_bbopt” (AMPLIFY_BBOPT_LOGGER_NAME)

  • デフォルト設定

    • ログレベル:INFO

    • 出力先:標準出力(sys.stdout

    • 伝播 (propagation):無効(False

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)

ロギングの制御

ログ出力を無効にする

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.disabled = True

ログレベルの変更

例えば、WARNING レベル以上のログだけを表示したい場合:

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger, WARNING

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.setLevel(WARNING)

特定のハンドラーに対して変更したい場合:

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger, WARNING

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
for handler in logger.handlers:
    handler.setLevel(WARNING)

ファイルへのログ出力を追加する

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME, AMPLIFY_BBOPT_LOG_FORMATTER
from logging import FileHandler, getLogger

file_handler = FileHandler("amplify_bbopt.log")
file_handler.setFormatter(AMPLIFY_BBOPT_LOG_FORMATTER)
logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.addHandler(file_handler)

ログの親ロガーへの伝播を有効化する

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)
logger.propagate = True

ロガーの状態確認

from amplify_bbopt import AMPLIFY_BBOPT_LOGGER_NAME
from logging import getLevelName, getLogger

logger = getLogger(AMPLIFY_BBOPT_LOGGER_NAME)

print("Level:", getLevelName(logger.level))
print("Handlers:", logger.handlers)
print("Propagate:", logger.propagate)

Note

複数のハンドラーを組み合わせることで、標準出力・ファイル出力などの併用が可能です。また、ログのフォーマットやフィルターの追加も標準の logging モジュールの機能として利用できます。

詳細は Python の公式ドキュメントをご参照ください: https://docs.python.org/ja/3/library/logging.html