私のpython3プログラムでlogging
モジュールを使用して、ログメッセージをログファイルに送信すると成功しました。例えば、/var/log/myprogram.log
です。場合によっては、これらのメッセージのサブセットもstdout
に移動し、ログファイルに移動したときと同じ方法で自分のlogging.Logger
インスタンスでフォーマットします。python3/logging:オプションで複数のストリームに書き込む
私は私がメッセージのみ/var/log/myprogram.log
に行くかどうかを選択できるようにloginstance.log(level, msg)
周りのラッパーのいくつかの並べ替えを入れたいのですが、私のロガーインスタンスがloginstance
呼ばれると仮定すると、または次のようにそれは、stdout
に存在しても行くかどうか:
# Assume `loginstance` has already been instantiated
# as a global, and that it knows to send logging info
# to `/var/log/myprogram.log` by default.
def mylogger(level, msg, with_stdout=False):
if with_stdout:
# Somehow send `msg` through `loginstance` so
# that it goes BOTH to `/var/log/myprogram.log`
# AND to `stdout`, with identical formatting.
else:
# Send only to `/var/log/myprogram.log` by default.
loginstance.log(level, msg)
私はフォーマットやその他のロギング動作を変更したい場合は、私が唯一の場所でこれを行う必要があるように私は、1でこれを管理するための単一logging.Logger
インスタンスをしたいと思います。
サブクラス化することには、logging.Logger
および/またはlogging.Formatter
が含まれていると推測していますが、これを行う方法はわかりません。
ご協力いただきありがとうございます。