Djangoのログ(logging)をどのようにカスタマイズできますか?

Djangoでは、ログの形式、レベル、出力方法をカスタマイズするためにログ設定を行うことができます。以下は一般的なカスタムログ設定方法の一つです。

  1. 設定ファイル (settings.py)
  2. 記録
  3. 記録
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'custom_logger': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/path/to/logfile.log',
            'maxBytes': 1024*1024*5,  # 5MB
            'backupCount': 5,
            'formatter': 'custom_formatter',
        },
    },
    'formatters': {
        'custom_formatter': {
            'format': '[%(asctime)s] %(levelname)s %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },
    },
    'root': {
        'handlers': ['custom_logger'],
        'level': 'DEBUG',
    },
}

上記の設定では、custom_loggerという名前のハンドラーを定義し、ログを指定されたファイル/path/to/logfile.logに書き込みます。ハンドラーのレベルはDEBUGで、すべてのレベルのログを記録します。maxBytesパラメーターはログファイルの最大サイズを表し、このサイズを超えると自動的にバックアップが切り替えられます。backupCountパラメーターはバックアップファイルの数を表します。custom_formatterはカスタムのログ形式で、日付、ログレベル、メッセージが含まれています。

  1. ルート構成で、custom_loggerハンドラをhandlersリストに追加し、levelをDEBUGに設定して、ルートロガーがこのハンドラを使用することを示します。
  2. 必要に応じて、この処理器を他のロガーで使用することができます。例えば:
import logging

logger = logging.getLogger('myapp')
logger.addHandler(logging.handlers['custom_logger'])
logger.setLevel(logging.DEBUG)

上記の例で言うと、loggerという名前のmyappを取得して、そのloggerにcustom_loggerハンドラを追加し、レベルをDEBUGに設定します。

このようにして、Djangoのロギングのカスタム設定が完了し、必要に応じてロギングハンドラ、フォーマット、およびレベルを変更できます。

bannerAds