2017-02-22 5 views
1

私はそれがアプリケーションのパフォーマンスに影響します Snippet 1 または Snippet 2djangoプロダクションですべてのsqlクエリを記録することをお勧めしますか?

などのミドルウェアを使用して、すべての要求のために私たちのPostgreSQLデータベースに対して行われたすべてのSQLクエリをログに記録することを考えていますか? Postgresの通常のロギングは私にとってはうまくいきません。なぜならSQLのクエリと一緒にいくつかの追加情報を保存しなければならないからです。

データベースログを使用してすべてのSQLクエリをログに記録しようとしましたが、悲しいことに、設定ファイルでDEBUG = Falseの場合に動作しないようです。

+1

設定がわからないため、何が起こるかはわかりません。確かに、それはアプリをスピードアップしません。 ;-) –

+0

@ KrzysztofSzularzしかし、私は知りたい、良いアイデアですか?データベースのログインをdjangoレベルで行うには?それは良い練習ですか? –

+2

DBクエリを本番環境のログに保存しないことをお勧めします。資格情報/機密情報の漏洩を引き起こす可能性があります。また、@ KrzysztofSzularzが正しいです。それはアプリを遅らせるでしょう。また、不要なログがありますが、その間に重要なログを見逃す可能性があります。 – ruddra

答えて

2

定義することでカスタムロギングを設定することができます。ログインは、set.py で行ってください。

このdocと偽デバッグ=とき、それは、ロギングすることが可能である:

logging doc がsetting.pyにこのコードを追加します。あなたはsnippet2に上記置く二つのリンクで

LOGGING = { 
'version': 1, 
'disable_existing_loggers': False, 
'handlers': { 
    'file': { 
     'level': 'DEBUG', 
     'class': 'logging.FileHandler', 
     'filename': '/path/to/debug.log', 
    }, 

}, 
'loggers': { 
    'django.db.backends': { 
     'handlers': ['file'], 
     'level': 'DEBUG', 
    }, 
}} 

はそれことを言いますSHO

if len(connection.queries) > 0 and settings.DEBUG: 
    .... 

:デバッグ= 真とライン35でsnippet1にこのような症状がある場合にのみ機能しますwsはdebug = trueで動作します

私はそれが役に立ちそうです。

関連する問題