将logger添加到开源pip包中并进行操作分析

梗概

    ソースが公開されている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 SignupView の def 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.
广告
将在 10 秒后关闭
bannerAds