ホームページ > データベース > mysql チュートリアル > パフォーマンス分析のために Django アプリケーションのすべての SQL クエリをログに記録するにはどうすればよいですか?

パフォーマンス分析のために Django アプリケーションのすべての SQL クエリをログに記録するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-15 21:16:45
オリジナル
528 人が閲覧しました

How Can I Log All SQL Queries in My Django Application for Performance Analysis?

SQL クエリのログ記録による Django データベースのパフォーマンスの分析

データベースのパフォーマンスを効果的に監視することは、Django アプリケーションにとって非常に重要です。 このガイドでは、アプリケーションによって実行されるすべての SQL クエリをログに記録する方法について詳しく説明し、パフォーマンスのチューニングとデバッグに貴重な洞察を提供します。

すべての SQL クエリのキャプチャとログ

このプロセスには、LOGGING ファイル内の settings.py 設定の構成が含まれます。 以下に段階的に詳しく説明します:

  1. Import connection: 実行されたクエリ リストにアクセスするために必要なモジュールをインポートします:
<code class="language-python">from django.db import connection</code>
ログイン後にコピー
  1. LOGGING を構成します: 次のように LOGGINGsettings.py 設定を追加または変更します:
<code class="language-python">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'],
        }
    }
}</code>
ログイン後にコピー

構成を理解する

  • handlers: console ハンドラーは、ログ メッセージをコンソールに出力します。 すべてのデバッグレベルのメッセージをキャプチャするには、levelDEBUG に設定されます。 require_debug_true フィルターは、設定で DEBUG = True の場合にのみログが記録されるようにします。

  • loggers: django.db.backends ロガーがターゲットです。これは、データベース対話ログが記録される場所です。 console ハンドラーを使用し、DEBUG レベルでログを記録するように構成されています。

完全な例

クエリを表示するには、適切な場所 (管理コマンドやテストなど) に以下を含めることができます。

<code class="language-python">from django.db import connection

# ... (LOGGING configuration from above) ...

print(connection.queries)</code>
ログイン後にコピー

この包括的なログ アプローチは、すべてのデータベース インタラクションの詳細な記録を提供し、パフォーマンスのボトルネックの特定とデータベース関連の問題のデバッグに役立ちます。このログが正しく機能するには、DEBUG = Truesettings.py を設定することを忘れないでください。 運用環境では、より堅牢なログ ソリューションの使用を検討してください。

以上がパフォーマンス分析のために Django アプリケーションのすべての SQL クエリをログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート