私はPythonを使ってメッセージキューから読み込むサービスを書いています。各メッセージについて、プロセスを実行し、完了するとキューから別のメッセージを取得します。ログ情報、警告、およびエラーを記録するためにログパッケージを使用しています。プロセスが何らかの理由で失敗した場合、プロセスはエラーをキャッチして、トレースバックで電子メールを送信します。アプリケーションがメッセージの処理を開始したときのログもメールに含めたいと思います。明確にするには - 私はまだアプリケーションがすぐにログに記録するのが好きです。しかし、アプリケーションが失敗し、正常に例外をキャッチした場合は、電子メールにもログを送信したいと思います。私はPythonのloggingパッケージが追加する他の情報を見たい除い失敗時のPythonロギングダンプ
while True:
# Grab the message here
log_list = []
try:
log_msg = "Some log message here"
log_list.append(log_msg)
...
except:
# send email here using log_list
これは一種の私の問題を解決するだろう:
私が最初に考えたのはちょうどそのような文字列をログ救うリストを使用していましたタイムスタンプのようなメッセージを記録する私は手動でこれを入れて、それを自分のlog_listオブジェクトに追加するだけでいいのではないかと思います。
import logging
logger = logging.getLogger()
while True:
logger.reset()
# Grab the message here
try:
logger.info("Some log message here")
...
except:
# send email here using something like logger.dump()
そう...私の質問は - ここで私は私のログを保存して、のような他のログイン情報を保存するために、リストを使用して回避することができ、このついて行くには別の方法があります:私は何をしたいのですタイムスタンプ、ロギングレベルなど?
は理にかなって拡張。私はまだそれがすぐにログに記録されることを望むでしょう。私は、失敗時に送信される電子メールのログを集めたいだけです。 – archeezee
これは、ロガーに追加された追加のカスタムロギングハンドラーのようなものです。 – chepner
私は、最後にログに記録されたいくつかのメッセージを記憶し、これらの行を抽出して送信する循環バッファ( 'deque'を使って)を持つカスタムログハンドラを追加したいと思います。 – 9000