を含ま
# Set up root logger - two handlers logging to files
fh_debug = logging.FileHandler('Syncer.debug', mode='w', encoding='utf-8')
fh_debug.setLevel(logging.DEBUG)
fh_log = logging.FileHandler('Syncer.log', mode='w', encoding='utf-8')
fh_log.setLevel(logging.INFO)
fh_formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
fh_debug.setFormatter(fh_formatter)
fh_log.setFormatter(fh_formatter)
logging.getLogger().addHandler(fh_debug)
logging.getLogger().addHandler(fh_log)
# Add console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch_formatter = logging.Formatter('%(message)s')
ch.setFormatter(ch_formatter)
logging.getLogger().addHandler(ch)
# Need to set the logging level of the logger as well as the handlers
logging.getLogger().setLevel(logging.DEBUG)
# Set up the logger for this module
logger = logging.getLogger("Syncer")
logger.debug('Logger started.')
あなたの問題は、あなたのFileHandler
のための間違ったmode
を選んだということです。
FileHandler
のデフォルトモードはa
です。これは、ログファイルに新しい行を追加することを意味します。
クラスlogging.FileHandler(ファイル名、モード=「」、エンコーディング=なし、遅延= False)が
あなたはファイルを長さゼロに切り捨てるか、新しいを作成しているw
にデフォルトモードを変更ファイルを書く。そのため、蓄積されたすべてのメッセージを失ったのです。
mode='a'
に変更するか、mode='w'
を削除すると、ロガーが機能します。
official python docs here
は、おそらくいくつかの他の目的のために、メインファイルをインポートするようにその例外ハンドラで何が起こるのか?読みますかより多くの履歴を持つように、一連のファイル(Syncer.debug.0、Syncer.debug.1など)を保持することができます。 – tdelaney
私は例外ハンドラを作成していません。簡単な修正は、mode = 'a'でファイルを開くことです。しかし、何が起きているのかを理解することはうれしいことです。 –