ホームページ >データベース >mysql チュートリアル >デバッグとモニタリングのために、管理クエリを含むすべての Django SQL クエリをログに記録するにはどうすればよいですか?

デバッグとモニタリングのために、管理クエリを含むすべての Django SQL クエリをログに記録するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-15 21:14:52132ブラウズ

How Can I Log All Django SQL Queries, Including Admin Queries, for Debugging and Monitoring?

すべての Django SQL クエリのインターセプトとロギング

質問:

Django アプリケーションによって実行されるすべての SQL クエリのログは、デバッグ、パフォーマンス分析、セキュリティ監視に役立ちます。 Django 管理インターフェイスによって生成されるすべての SQL ステートメントを含めて、これをどのように達成できるでしょうか?

解決策:

すべての SQL クエリをログに記録するには、次のディレクティブを使用して settings.py の LOGGING 設定を拡張します:

<code>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>

手順:

この構成では、ログ メッセージをコンソールに出力する「console」という新しいハンドラーが追加されますが、これは DEBUG モードが有効な場合のみです。 「django.db.backends」ロガーは、すべての SQL クエリを DEBUG レベルでこのハンドラーに記録するように構成されています。

使用法:

すべての SQL クエリをコンソールではなくファイルに書き込むには、「handlers」セクションを次のように変更します。

<code>'handlers': {
    'file': {
        'level': 'DEBUG',
        'filters': ['require_debug_true'],
        'class': 'logging.FileHandler',
        'filename': '/path/to/all-sql.log',
    }
}</code>

これにより、すべてのデバッグ ログ (SQL クエリを含む) が指定されたファイルにリダイレクトされます。

以上がデバッグとモニタリングのために、管理クエリを含むすべての Django SQL クエリをログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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