2012-10-10 34 views
5

我的rotatefilehandler被設置爲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

你可以請嘗試找到仍然導致此問題的最小代碼/配置嗎? – 2012-10-10 09:28:40

+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