2016-11-29 20 views
9

私はPythonでかなり新しく、ロギングモジュールに入り始めました。私はメッセージをログファイルに記録してコンソールに出力したいと思っています。以下のコードはメッセージをコンソールに出力しますが、すべてのメッセージをファイルに記録する方法はありますか?Pythonがstdoutとログファイルにログする

Loggerオブジェクトには、ファイルへのロギング用の関数呼び出し(basicConfig(filename =))がありません。この機能を追加するにはどうすればよいですか?

ご協力ありがとうございます。

import logging 

# create logger 
logger = logging.getLogger(_name_) 
logger.setLevel(logging.DEBUG) 

# create console handler and set level to debug 
ch = logging.StreamHandler() 
ch.setLevel(logging.DEBUG) 

# create formatter 
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 

# add formatter to ch 
ch.setFormatter(formatter) 

# add ch to logger 
logger.addHandler(ch) 

# 'application' code 
logger.debug('debug message') 
logger.info('info message') 
logger.warn('warn message') 
logger.error('error message') 
logger.critical('critical message') 
+0

ロガー= logging.getLogger(\ _ \ _名\ _ \ _)詳細な説明のための – mujjiga

答えて

12

あなただけのブレンダンの答え@上の拡大logging.FileHandler

fh = logging.FileHandler(r'/path/to/log.txt') 
logger.addHandler(fh) 
5

のように、別のハンドラを追加する必要があります。

ロガーは現在、StreamHandlerを使用してコンソールに出力します。

FileHandlerを追加すると、ファイルにログインできます。

各ハンドラインスタンスは、独自の形式とログレベルを持つようにカスタマイズできます。

同じフォーマットでログを記録する場合は、新しいFileHandlerでもフォーマットを設定する必要があります。

fh = logging.FileHandler(r'/path/to/log.txt') 
fh.setFormatter(formatter) 
logger.addHandler(fh) 

もっと読むPython logging cookbook

+0

ありがとう! – Zen

関連する問題