ホームページ  >  記事  >  バックエンド開発  >  Django で包括的な SQL クエリ ログを実装するにはどうすればよいですか?

Django で包括的な SQL クエリ ログを実装するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-17 17:25:02478ブラウズ

How to Implement Comprehensive SQL Query Logging in Django?

Django での包括的な SQL クエリ ロギング

Django アプリケーションによって実行されるすべての SQL クエリをキャプチャすることは、デバッグ、パフォーマンス分析、セキュリティ監査にとって重要です。これを実現するための包括的なガイドは次のとおりです:

settings.py ファイルを変更し、次のスニペットを LOGGING フィールドにマージします:

<code class="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>

この構成は、すべての Django データベース バックエンド メッセージ (SQL クエリ) をルーティングします。 ) をコンソール ハンドラーに渡します。デフォルトでは、これは DEBUG モードが有効な場合にのみ表示されます。

all-sql.log という名前のファイル内のすべての SQL ステートメントをキャプチャするには、次の構成を追加できます:

<code class="python">HANDLERS = {
    ...  # existing handlers

    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/path/to/all-sql.log',  # adjust file path as needed
    }
}</code>

最後に、新しいファイル ハンドラーをロガー設定に追加します。

<code class="python">LOGGERS = {
    ...  # existing loggers

    'django.db.backends': {
        'level': 'DEBUG',
        'handlers': ['console', 'file'],  # add 'file' handler
    }
}</code>

これらの変更により、すべての SQL クエリがコンソール (DEBUG が有効な場合) と指定されたファイルの両方に記録されます。ニーズに合わせて filename パラメーターのファイル パスを調整します。 Django アプリケーションを再起動して、ログ機能を有効にします。

以上がDjango で包括的な SQL クエリ ログを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。