Django アプリ内のすべての SQL クエリをログに記録します
この記事では、管理サイトからのクエリを含む、Django アプリケーションによって実行されるすべての SQL クエリを効果的に記録する方法について説明します。重要なのは、settings.py
ファイルの LOGGING
フィールドを変更することです。
実装手順:
logging
ライブラリをコードにインポートします。これにより、ログ機能を構成して処理できるようになります。 <code class="language-python">import logging</code>
<code class="language-python">class QueryHandler(logging.Handler): def emit(self, record): # 自定义处理SQL查询的逻辑 pass</code>
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>
<code class="language-python">logger = logging.getLogger('django.db.backends')</code>
<code class="language-python">logger.debug(sql_query)</code>
これらの手順に従い、提供されたコード スニペットを settings.py
ファイルに組み込むと、Django はすべての SQL クエリを指定されたログ ファイルに記録し、すべてのデータベース インタラクションの包括的な概要を提供します。 'path.to.QueryHandler'
をカスタム プロセッサへの実際のパスに置き換えることを忘れないでください。 カスタム プロセッサが必要ない場合は、'query_handler'
部分を削除して、'console'
プロセッサのみを残すことができます。
以上がDjango アプリケーションのすべての SQL クエリをログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。