「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > デバッグとパフォーマンス分析のために Django ですべての SQL クエリをキャプチャする方法

デバッグとパフォーマンス分析のために Django ですべての SQL クエリをキャプチャする方法

2024 年 11 月 25 日に公開
ブラウズ:480

How to Capture All SQL Queries in Django for Debugging and Performance Analysis?

Django ですべての SQL クエリをログに記録する

Django では、アプリケーションによって実行された SQL クエリをキャプチャすると、デバッグやパフォーマンス分析のための貴重な洞察が得られます。 、セキュリティ監視。これを実現する方法は次のとおりです。

管理サイトからのクエリを含むすべての SQL クエリをログに記録するには、settings.py ファイルの LOGGING 構成を変更します。次のスニペットを追加して既存の LOGGING フィールドとマージします:

LOGGING = {
    'version': 1,
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        }
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'DEBUG',
            'handlers': ['console'],
        }
    }
}

この設定では、settings.py で DEBUG フラグが True に設定されている場合、すべての SQL クエリがコンソールにルーティングされます。クエリをファイルに記録したい場合は、「console」ハンドラーを「FileHandler」に置き換えて、ログ ファイルへのパスを指定できます。

たとえば、クエリを次の名前のファイルに記録します。 all-sql.log では、次のハンドラーを使用します:

'handlers': {
    'all_sql_file': {
        'level': 'DEBUG',
        'filters': ['require_debug_true'],
        'class': 'logging.FileHandler',
        'filename': 'all-sql.log',
    }
}

新しいログ構成が確実に有効になるように、これらの変更を加えた後は必ず Django サーバーを再起動してください。

リリースステートメント この記事は次の場所に転載されています: 1729157237 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3