ホームページ >バックエンド開発 >Python チュートリアル >Django ですべての SQL クエリをログに記録するにはどうすればよいですか?

Django ですべての SQL クエリをログに記録するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-17 17:27:03493ブラウズ

How Can I Log All SQL Queries in Django?

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

この質問では、Django アプリケーションによって実行されたすべての SQL クエリを記録する方法を求めています。管理サイト。タスクは、これらの SQL ステートメントをキャプチャするための中央ログ ファイル (all-sql.log など) を作成することです。

LOGGING の構成:

これを実現するには、マージします。 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>

説明:

  • すべてをキャプチャするには 'level': 'DEBUG' を設定しますSQL クエリ (重大度に関係なく)。
  • SQL クエリをコンソール出力にリダイレクトするには、'handlers': ['console'] を使用します。
  • 'loggers': {'django.db. backends': {'level': 'DEBUG'}} は、Django ORM を通じて実行されたすべての SQL クエリをログに記録します。

注:

このソリューションは独自に作成されました@acardinas89の回答より。これにより、アプリケーションがデバッグ モードのときに、Django で実行されるすべての SQL クエリが確実にコンソールに書き込まれるようになります。

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

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