将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.