オープンソースのpipパッケージにloggerを入れて動作解析する

概要

  • ソースが公開されているpipパッケージの動作を調べるため、logger入りのパッケージを作って、ローカルからインストールします。

今回の対象

  • django-allauth 0.44.0

準備

  • 現在インストールされているバージョンを確認

    • pip list | grep django-allauth
  • ソースコードをGitHubからclone

    • mkdir django-allauth-with-log && cd django-allauth-with-log
    • git clone https://github.com/pennersr/django-allauth.git
    • cd django-allauth

ローカルからpipでインストールする手順の確認

バージョン番号の変更

  • vi allauth/__init__.py
#VERSION = (0, 44, 0, "dev", 0)
VERSION = (0, 44, 0, "dev", 99)

インストール済みパッケージのアンインストール

  • pip uninstall django-allauth

ローカルからインストール

  • setup.py のあるディレクトリの1つ上のディレクトリに移動
    • cd ..
  • pipでディレクトリ指定でインストール
    • pip install ./django-allauth/

インストールされたバージョンの確認

  • pip list | grep django-allauth

    • 上記で書き換えたバージョン番号 django-allauth 0.44.0.dev99 と出れば成功です

解析用に手を加える

loggerの設定を追加

loggerの設定ファイルを追加し、allauth/app_settings.pyから読み込む

  • vi allauth/logging_settings.py
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,

    'formatters': {
        'django.server': {
            '()': 'django.utils.log.ServerFormatter',
            'format': '[%(server_time)s] %(message)s a',
        },
        'develop': {
          'format': '%(asctime)s [%(levelname)s] %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'develop',
        },
        'django.server': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'django.server',
        },
    },
    'loggers': {
        '': {
          'handlers': ['console'],
          'level': 'DEBUG',
          'propagate': False,
        },
        'django': {
            'handlers': ['console'],
            'level': 'INFO',
        },
        'django.server': {
            'handlers': ['django.server'],
            'level': 'INFO',
            'propagate': False,
        },
    }
}
  • vi allauth/app_settings.py
from .logging_settings import *    # 追加

任意の場所にログ出力を追加

  • 例えば、allauth/account/views.pyに以下を追加

  • loggerの設定

import sys
import logging
logger = logging.getLogger(__name__)
  • 任意の場所に以下を追加(例:class SignupViewdef dispatch )
    logger.info(f'class={self.__class__.__name__}, function={sys._getframe().f_code.co_name}, Line={sys._getframe().f_lineno} called.')
  • クラス名は継承先の名前?が表示されるので注意が必要

ローカルからpipで再インストール

  • pip uninstall -y django-allauth
  • pip install ./django-allauth/
    • Successfully installed django-allauth-0.44.99.dev0と出れば成功です

動作確認

  • サーバを起動してhttp://127.0.0.1:8000/member/signup/のようなURLにアクセスして、以下のようにコンソールに表示されればOKです。
2020-11-03 01:23:45,678 [INFO] class=SignupView, function=dispatch, Line=238 called.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です