2017-07-28 8 views
1

私は毎日実行され、PythonのTimedRoatingLogFileHandlerを使用しているスクリプトを持っています。 以下はコードからの抜粋です。PythonでTimedRotatingFileHandlerのロールオーバーが発生していない

log = 'test.log'   # Set up Log title 
filename = '/var/log/' + log 
handler = TimedRotatingFileHandler(filename, when="D", interval=1, backupCount=45) 
formatter = logging.Formatter('%(asctime)s : %(name)s : %(levelname)s : %(message)s', 
           datefmt='%a, %d-%b-%Y %H:%M:%S') 
handler.setFormatter(formatter) 
logger = logging.getLogger(__name__) 
logger.setLevel(logging.INFO) 
logger.addHandler(handler) 

logger.info("Script execution started") 

私は毎日作成される新しいログファイルtest.logを期待していますし、以前のログはtest.log.1に移動され、test.log.2など

は私の仮定が正しいですか? もしそうなら、なぜそれは起こっていないのですか? 今日のログで昨日の出力を見ることができます。昨日のログファイルは、私が期待していた別のファイルに移動されません。 私はSUSE LinuxマシンでPython 2.7を使用しています。 他のスレッドをチェックしましたが、ほとんどのスレッドには回答がありません。 詳細が必要な場合はお知らせください。

+0

私は自分の答えを更新しました。 –

+0

この設定は機能しています。それは私の悪いです。フォルダにはたくさんのファイルがあり、 "ls -lrt test.log *"の代わりに "ls -lrt test * log"を実行していました。 –

答えて

0

ロールオーバーが発生するには、実際にログを記録する必要があります。あなたのプログラムがこれを行うまで、昨日の出力は現在のログに残っている可能性があります。

更新:TimedRotatingFileHandlerは、複数日にわたってログオンしている間、スクリプトが複数日にわたって実行される場合です。スクリプトが1日の終わりまでに毎日完了する場合は、FileHandlerを使用して、日付から派生したファイル名を付けた方がよいでしょう。

+0

最後の行をご覧ください。私は最後に "logger.info"ステートメントを含めました。そして私が言ったように、これは単なる抜粋です。スクリプトにはさらに多くのものがあり、それゆえに多くのlogger.infoまたはlogger.errorステートメントがあります。 –

関連する問題