私は、設定ではdebug = True
を持つことができ、すべてのSQLクエリがログに記録されることを知っています。Djangoの1つのビューに対してのみクエリを記録することはできますか?
しかし、応答が返される前に、特定のビューで作成されたすべてのSQLクエリを記録します。
Django 1.3でこれを行うにはどうすればいいですか?
私は、設定ではdebug = True
を持つことができ、すべてのSQLクエリがログに記録されることを知っています。Djangoの1つのビューに対してのみクエリを記録することはできますか?
しかし、応答が返される前に、特定のビューで作成されたすべてのSQLクエリを記録します。
Django 1.3でこれを行うにはどうすればいいですか?
これは、特定のビューのコンテキスト内でログ設定を変更することによって実行できます。あなたはまだDEBUG
を有効にする必要があり
:settings.DEBUGは関係なく、インストールされているログ・レベルまたはハンドラの、Trueに設定されている場合
パフォーマンス上の理由から、SQLのログのみが有効になります。
...ただし、特定のビューによるクエリのみが記録されるように構成を変更できます。 INFO
以上に設定settings.py
でDjangoのSQLロガー(django.db.backends
)レベルと、それはSQLクエリを記録停止していることを確認します。
1:ここでは
は、それが行うことができる方法です。
2.a。ビューの最初の行にSQLロギングを設定するには、ロガーレベルをDEBUG
に設定します。最後の行は元の値に戻します。これは最も簡単な方法ですが、ビューコードの前後のミドルウェアによって実行されるクエリはログに記録されません。
2.b。ビュー処理の前後で同じことを行うカスタムミドルウェアを作成します。最初に配置すると、他のミドルウェアによって作成されたすべてのクエリも記録されます。
このメソッドはスレッドセーフではありませんが、開発環境でのみこの設定が必要なので、これは問題ではありません。
Djangoのドキュメント "ロギング" の章: https://docs.djangoproject.com/en/1.4/topics/logging/
ライブラリリファレンスをロギングのPython:余談として http://docs.python.org/library/logging.html
ありがとう!これを試してみる:) – John
。ログ記録のための監視をチェックするhttps://github.com/dcramer/sentry –