SIGMA-SE Tech Blog

SIGMA-SE Tech Blog

Django - Django Debug Toolbar : デバッグ情報とカスタマイズ

目的

この記事では、Django Debug Toolbarのデバッグ情報とカスタマイズ方法について説明する。

概要説明と実施内容

表示パネルの概要説明

以下、インストール後の初期状態から表示されているデフォルトパネルについて説明する。

  1. Versions
    Webアプリで使用されているモジュール(フレームワーク、言語、プラグイン等)のバージョン情報が表示される。
    pid11_1

  2. Time(時刻)
    現在の画面が表示されるまでの各処理に要した時間が確認できる。
    pid11_2

    • 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を一覧で確認できる。
    pid11_3

  4. Headers
    HTTPリクエストヘッダー情報レスポンスヘッダー情報を確認できる。
    pid11_4

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

  6. SQL
    画面が表示されるまでに実行されたSQL文をはじめ、それぞれに要した実行時間Stacktraceを確認できる。
    pid11_6

  7. Static Files
    画面を表示する際に読み込んだStaticファイルを確認できる。
    pid11_7

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

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

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

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

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

表示パネルのカスタマイズ

上記デフォルトパネルは、settings.pyDEBUG_TOOLBAR_PANELSに設定されている。

  • settings.pyのDEBUG_TOOLBAR_PANELS(デフォルト) 下記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.redirects.RedirectsPanel'
    ]
    
  • プロファイリング情報の追加例

    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'    # 追記
    ]
    

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

  • その他のパネルについて 下記サードパーティ製のパネルを参照。
    https://django-debug-toolbar.readthedocs.io/en/stable/panels.html#third-party-panels



Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp