Python的记录器是否能够旋转日志文件?

时间:2016-01-19 08:59:42

标签: python logging

有没有办法使用python中提供的日志记录模块来旋转日志文件?就像logrotate中那样?

我使用了logrotate,但它产生了一些奇怪的结果。

1 个答案:

答案 0 :(得分:1)

我认为this可以帮到你。

是的,你也可以在Python中用logrotate类似于在Python中旋转日志文件。以下是上述链接中的一个小例子:

import glob
import logging
import logging.handlers

LOG_FILENAME = 'logging_rotatingfile_example.out'

# Set up a specific logger with our desired output level
my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)

# Add the log message handler to the logger
handler = logging.handlers.RotatingFileHandler(
              LOG_FILENAME, maxBytes=20, backupCount=5)

my_logger.addHandler(handler)

# Log some messages
for i in range(20):
    my_logger.debug('i = %d' % i)

# See what files are created
logfiles = glob.glob('%s*' % LOG_FILENAME)

for filename in logfiles:
    print(filename)

脚本的输出是:

logging_rotatingfile_example.out
logging_rotatingfile_example.out.1
logging_rotatingfile_example.out.2
logging_rotatingfile_example.out.3
logging_rotatingfile_example.out.4
logging_rotatingfile_example.out.5

最新文件始终为logging_rotatingfile_example.out每次达到大小限制时,使用后缀.i重命名。重命名每个现有备份文件以增加后缀(.1变为.2等)。

这只是一个节目示例。在现实生活中,您应该将maxBytes设置为适当的值。

来源:Python Docs(上面列出的文章,以防链接被破坏)