のデフォルトハンドラを交換し、私はWSGIの各要求(web2pyの)アプリケーション上で実行されている次のコードを持っている:はPythonのロガー
import logging, logging.handlers
from logging import StreamHandler, Formatter
def get_configured_logger(name):
logger = logging.getLogger(name)
if (len(logger.handlers) == 0):
# This logger has no handlers, so we can assume it hasn't yet been configured (Django uses similiar trick)
# === Configure logger ===
# Create Formatted StreamHandler:
FORMAT = "%(process)s %(thread)s: %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('CONFIGURING LOGGER')
return logger
# Get app specific logger:
logger = get_configured_logger(request.application)
logger.debug("TEST")
私がしたいフォーマットされたハンドラで、一度ロガーを設定するためのものです。それは私が私の標準出力に二重のエントリを取得していますことを除いて、動作します:
81893 4329050112: CONFIGURING LOGGER
DEBUG:dummy:CONFIGURING LOGGER
81893 4329050112: TEST
DEBUG:dummy:TEST
は、どのように私は私の新しいフォーマットされたハンドラを使用すると、デフォルトの1を隠す/取り除くのですか?
以前このクラスを使用したことはありませんでしたが、logger.setLevel(logging.DEBUG)とlogger.debugは冗長であると思いませんか? – MiJyn
lkjoel-いいえ、それは別のものです。 '.debug(..)'を呼び出すと、デバッグレベルでログエントリが作成され、ロギングレベルを設定すると、そのレベルの*ハンドル*ログエントリがハンドラに伝えられます。 – Yarin
どこにでも 'logging.basicConfig'を呼び出していますか?もしそうなら、それをコメントアウトしてください。 – unutbu