2012-10-10 29 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