2012-10-10 14 views
5

私のrotatefilehandlerは、3つのバックアップで512バイトに設定されています。しかし、ファイルは回転せず、現在は3.9MBです。私は間違っていますか?私はUbuntu 10.10を使用しています。同じ問題を表示するDebianイメージのいくつかに同じコードがありますので、私のコードが間違っていると仮定します。Python回転ファイルハンドラが回転しない

[formatters] 
keys=simpleFormatter 

[loggers] 
keys=root,simpleExample 

[handlers] 
keys=consoleHandler,rfileHandler 

[formatter_simpleFormatter] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
datefmt= '%Y-%m-%d %H:%M:%S' 

[logger_root] 
level=INFO 
handlers=consoleHandler,rfileHandler,email 

[handler_consoleHandler] 
class=StreamHandler 
level=INFO 
formatter=simpleFormatter 
args=(sys.stdout,) 

[handler_rfileHandler] 
class=handlers.RotatingFileHandler 
backupCount=3 
maxBytes=512 
formatter=simpleFormatter 
level=INFO 
args=('/blabla/logs/blabla.log',) 

[logger_simpleExample] 
level=INFO 
handlers=consoleHandler 
qualname=simpleExample 
propagate=0 

[handler_email] 
class=handlers.SMTPHandler 
level=WARNING 
formatter=simpleFormatter 
args=('target url','sendemail',['[email protected]*****.com'],'EGIM Outstation Logger',('username','pw')) 
+0

この問題の原因となる最小のコード/構成を探してください。 –

+0

handler_rfileHandlerセクションで 'mode = 'w''を指定したり、同じセクションにある' args'を使ってすべての引数を渡そうとすることができます – jfs

答えて

2

私は同じ問題がありました。試してみてください:

[handler_rfileHandler] 
class=handlers.RotatingFileHandler 
formatter=simpleFormatter 
level=INFO 
args=('/blabla/logs/blabla.log', 'a', 512, 3) 
3

私はちょうどmaxBytesbackupCountが同様に設定ファイルから来ると、同じ問題を抱えていました。

次のコードは動作しませんでした:

handler = logging.handlers.RotatingFileHandler(filename = config.get("Logger", 'file'), 
               maxBytes = config.get("Logger", 'max_file_size'), 
               backupCount = config.get("Logger", 'files_to_keep')) 

それは問題がパラメータを取得するための方法だったことが判明しました。文字列の代わりに整数値を渡す次のコードは完全に動作します:

handler = logging.handlers.RotatingFileHandler(filename = config.get("Logger", 'file'), 
               maxBytes = config.getint("Logger", 'max_file_size'), 
               backupCount = config.getint("Logger", 'files_to_keep')) 
+0

これらのパラメータに整数を使う必要があります。 – Stan

関連する問題