6

我的旋转文件处理程序设置为 512 字节,具有三个备份。但是文件不旋转,目前为 3.9MB 我做错了什么?我使用的是 Ubuntu 10.10,我在几个显示相同问题的 Debian 映像上也有相同的代码,所以我认为这是我的代码有问题。

[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',['erich@*****.com'],'EGIM Outstation Logger',('username','pw'))
4

2 回答 2

8

I had same problem. Try with :

[handler_rfileHandler]
class=handlers.RotatingFileHandler
formatter=simpleFormatter
level=INFO
args=('/blabla/logs/blabla.log', 'a', 512, 3)
于 2013-10-22T09:17:43.100 回答
4

我也遇到了同样的问题,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'))
于 2014-05-07T15:51:39.357 回答