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

Django アプリケーションのすべての SQL クエリをログに記録するにはどうすればよいですか?

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

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

Django アプリ内のすべての SQL クエリをログに記録します

この記事では、管理サイトからのクエリを含む、Django アプリケーションによって実行されるすべての SQL クエリを効果的に記録する方法について説明します。重要なのは、settings.py ファイルの LOGGING フィールドを変更することです。

実装手順:

  1. ログ ライブラリのインポート: まず、logging ライブラリをコードにインポートします。これにより、ログ機能を構成して処理できるようになります。
<code class="language-python">import logging</code>
ログイン後にコピー
  1. カスタム プロセッサを定義する (オプション): SQL クエリ ログを処理するカスタム プロセッサを作成することを選択できます。これは必須ではありませんが、ロギング動作をより詳細に制御できるようになります。
<code class="language-python">class QueryHandler(logging.Handler):
    def emit(self, record):
        # 自定义处理SQL查询的逻辑
        pass</code>
ログイン後にコピー
  1. ログ設定を構成します: 次のコード スニペットを settings.py ファイルの LOGGING フィールドにマージします。これにより、SQL クエリのログが有効になり、定義されたプロセッサに出力が送信されます。
<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',
        },
        'query_handler': {
            'level': 'DEBUG',
            'filters': [],
            'class': 'path.to.QueryHandler', # 将path.to.QueryHandler替换为您的自定义处理器的路径
        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'DEBUG',
            'handlers': ['query_handler'],
        }
    }
}</code>
ログイン後にコピー
  1. ロガーをインスタンス化します: 設定を構成した後、ロガーを作成してログを開始します。
<code class="language-python">logger = logging.getLogger('django.db.backends')</code>
ログイン後にコピー
  1. SQL クエリのログ: 最後に、ロガーを使用して、アプリケーションの実行中に SQL クエリをログに記録します。
<code class="language-python">logger.debug(sql_query)</code>
ログイン後にコピー

これらの手順に従い、提供されたコード スニペットを settings.py ファイルに組み込むと、Django はすべての SQL クエリを指定されたログ ファイルに記録し、すべてのデータベース インタラクションの包括的な概要を提供します。 'path.to.QueryHandler' をカスタム プロセッサへの実際のパスに置き換えることを忘れないでください。 カスタム プロセッサが必要ない場合は、'query_handler' 部分を削除して、'console' プロセッサのみを残すことができます。

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

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