2

ここで説明されているように、私はdjango1.3のロギングフレームワークを使用してい ますhttps://docs.djangoproject.com/en/1.3/topics/logging/

DEV環境のsettings.pyファイルには、基本的にカスタムフォーマッター、ロガー、ハンドラーが定義されているため、デバッグ出力をファイルに記録できます。

だから今私のコードには、あちこちにlogger.debug()ステートメントがあります。

私の質問は次のとおりです。

  1. 本番環境にデプロイする場合、logger.debugステートメントはパフォーマンスに(重要な)影響を及ぼしますか?(つまり、それらをすべて取り出す必要がありますか?)
  2. settings.pyファイルを変更してファイルにキャプチャされないようにするための最良の方法は何ですか?現在、ハンドラーをdjango.utils.log.NullHandlerに変更しています
4

3 に答える 3

1
  1. これらのデバッグステートメントはすべて、全体的なパフォーマンスに与える影響はごくわずかです。負荷が高いときに、これらすべてのログメッセージをファイルのどこかに書き込もうとすると、パフォーマンスの問題が発生します。ファイルに多くのものを書き込むと、CPUとIOに負荷がかかる可能性があります。ログレベルを低く設定している場合(警告)、これはそれほど問題にはなりません。これにより、大量のメッセージがログに記録されることはないはずです。デバッグステートメントをそこに保持しておくと、将来、そのコードをデバッグ/拡張するときに役立ちます。
  2. メッセージがファイルに記録されたものや標準出力されたものがわからない場合は、nullハンドラーを使用します。または、ログレベルをWARNINGに下げて、重要なメッセージのみが送信されるようにすることもできます。
于 2012-05-05T21:08:38.803 に答える
1

問題が何であるかを見つけるのが最も難しい場所であるため、本番構成にはまだかなりのログが必要です。そのため、あまり多くを取り除いてはいけません。

生産/開発の設定に関しては、私は常にこれを私のsettings.pyの下部に持っています:

try:
    from local_settings import *
except ImportError:
    pass

次に、ソース管理に追加せずに設定を上書きできるlocal_settings.pyがあります。これにより、本番環境と開発環境の個別の設定を非常に簡単に行うことができます。

私はこのブログからアイデアを取り入れて、今では多くのプロジェクトでそれを使用しています-非常に便利です。ブログはリンクを拡張し、開発と本番の設定をソース管理に追加し、local_settingsを使用してどちらか一方を含める方法を示しています。

于 2012-05-05T21:28:26.183 に答える
0

本番環境では、常にデバッグを有効にする必要があります。他の人が言っているように、これが最も必要な場所です。

本番環境sentryでは、アプリケーションレベルのログ記録とsplunk、簡単に検索できるようにシステムログを収集するために使用します。

適切なデバッグステートメントから得られる全体的な値は、パフォーマンスに与える可能性のある影響を打ち消します。別の言い方をすると、デバッグがなかった場合、システムのパフォーマンスが良くなかった場合、どこで窒息していたかを知ることができません。

デバッグステートメントは、パフォーマンスを向上させるために私が探す最後の場所です。memcacheまたはredisを実装すると、より多くの利益を得ることができます。または単にクエリを最適化します(これがパフォーマンスの問題の大部分が始まる場所であるため)。

于 2012-05-06T04:35:58.057 に答える