UNISIA-SE Tech Blog

気まぐれお勉強日記

[Django] [2] Django Debug Toolbar のデバッグ情報

1. 前提条件


このページでは、Debug Toolbar のデバッグ情報について記載する。

▼ 以下の環境下で動作確認しているが、Djangoがインストール済でサーバーとして動作する環境であれば問題ない。
・OS:CentOS7.4
・Webサーバー:Apache2.4.6 + mod_wsgi
・開発言語:Python3.6(venv)、Python2.7(標準搭載)
・FW:Django2.0
・DB:PostgreSQL9.2
・仮想環境フォルダ:/var/www/vops
・プロジェクトフォルダ:/var/www/vops/ops

▼ ※上記の環境構築周りは、下記を参考
[1] VPS契約とCentOSインストール + 初期設定
[2] CentOS7にApacheインストール + アクセス周りの設定
[3] Let's EncryptのSSL/TLS導入と定期更新
[4] Python、Djangoインストール + Django起動確認
[5] Apache + Django + PostgreSQLで本番環境を構築 (インストール編)
[6] Apache + Django + PostgreSQLで本番環境を構築 (設定編)
[1] Django Debug Toolbar の導入

2. 表示項目の概要説明


以下、インストール後の初期状態から表示されている デフォルトの項目 について記載する。

(1) Versions
Webアプリで使用されている モジュール(フレームワーク、言語、プラグイン等)のバージョン情報 が表示される。
※「1. 前提条件」で記載した、Django2.0、Python3.6、Debug Toolbar1.10が確認できる。


(2) Time (時刻)
現在表示中している画面が表示されるまでに どの処理にどのくらい時間がかかったか 確認することができる。


Resource usage > User CPU time:クライアントからリクエストを受信してから、ページ構成を準備するまでの時間。

Resource usage > System CPU time:「User CPU time」の後に、サーバーがレスポンス情報を作成し、クライアントに返すまでの時間。

Resource usage > Total CPU time:リクエストを受信してから、クライアントに返すまでの時間。(「User CPU time」 + 「System CPU time」 の合計)

Resource usage > Elapsed time:「Total CPU time」にHTML、CSS、Javascriptに関するサーバー処理とクライアントでレタリングする時間を加えた時間。

Resource usage > Context switches:voluntary context switchesは、複数のプロセスを効率良く実行するため、自発的にコンテキストスイッチを実行した回数で involuntary context switchesは、実行優先度が高いプロセスを実行するために、強制的にコンテキストスイッチを実行した回数。

(3) Settings
「settings.pyの設定値」を一覧で確認することができる。


(4) Headers
HTTP「リクエストヘッダー情報」「レスポンスヘッダー情報」を確認することができる。


(5) Request
ViewやCookie、Sessionなどの「リクエスト情報を確認」できる。


(6) SQL
画面が表示されるまでに 実行されたSQL文 をはじめ、それぞれに要した「実行時間やStacktrace」を確認することができる。


(7) StaticFiles
画面を表示する際に読込んだ「Staticファイル」を確認できる。


(8) Templates
画面を表示する際に使用された継承も含む「Templateファイル」を確認できる。


(9) Cache
画面を表示する際に利用された「キャッシュバックエンド情報」を確認できる。


(10) Signals
FrameWorkに備わっている各アクション単位での通知の受渡し一覧。


(11) Logging
loggingモジュールで出力したログが確認できる。


(12) Intercept redirects
デフォルト無効であるチェックボックスを有効にすると リダイレクトが中断 されるようになる。
※ リダイレクト処理をデバッグするときに使用する。

3. 表示項目のカスタマイズ


settings.py に下記の「DEBUG_TOOLBAR_PANELS」を追加することで 項目の並び替え削除や追加 ができるようになる。

▼ 「2. 表示項目の概要説明」触れた項目(デフォルト)。

DEBUG_TOOLBAR_PANELS = [
    'debug_toolbar.panels.versions.VersionsPanel',
    'debug_toolbar.panels.timer.TimerPanel',
    'debug_toolbar.panels.settings.SettingsPanel',
    'debug_toolbar.panels.headers.HeadersPanel',
    'debug_toolbar.panels.request.RequestPanel',
    'debug_toolbar.panels.sql.SQLPanel',
    'debug_toolbar.panels.staticfiles.StaticFilesPanel',
    'debug_toolbar.panels.templates.TemplatesPanel',
    'debug_toolbar.panels.cache.CachePanel',
    'debug_toolbar.panels.signals.SignalsPanel',
    'debug_toolbar.panels.logging.LoggingPanel',
    'debug_toolbar.panels.redirects.RedirectsPanel'
]

▼ 上記「DEBUG_TOOLBAR_PANELS 」にデフォルトでは表示されていない プロファイリング情報 を追加。

DEBUG_TOOLBAR_PANELS = [
    'debug_toolbar.panels.versions.VersionsPanel',
    'debug_toolbar.panels.timer.TimerPanel',
    'debug_toolbar.panels.settings.SettingsPanel',
    'debug_toolbar.panels.headers.HeadersPanel',
    'debug_toolbar.panels.request.RequestPanel',
    'debug_toolbar.panels.sql.SQLPanel',
    'debug_toolbar.panels.staticfiles.StaticFilesPanel',
    'debug_toolbar.panels.templates.TemplatesPanel',
    'debug_toolbar.panels.cache.CachePanel',
    'debug_toolbar.panels.signals.SignalsPanel',
    'debug_toolbar.panels.logging.LoggingPanel',
    'debug_toolbar.panels.profiling.ProfilingPanel'    # 追記
]

Profiling:このように末尾に追加した プロファイリング情報 が確認できるようになる。


※ その他、下記 サードパーティ製 のパネルも準備されている。

以上。

前ページ:[Django] [1] Django Debug Toolbar の導入

Copyright UNISIA-SE All Rights Reserved.
s-hama@unisia-se.jp