记录 - 如果大小太大则重写?

时间:2016-09-12 02:15:40

标签: python logging

我有一个守护进程,它记录了它的操作:

LOG_FILE = '%s/%s.log' % (LOG_DIR, machine_name)
logging.basicConfig(filename=LOG_FILE,
                    level=logging.DEBUG,
                    format='%(asctime)s,%(msecs)05.1f '
                           '(%(funcName)s) %(message)s',
                    datefmt='%H:%M:%S')

过了一会儿,日志大小变得非常大,设备上没有剩余空间。

所以我不得不手动删除日志,这很好。

保持日志大小不超过某个限制的最佳方法是什么? 它可以通过日志记录模块完成,还是我需要编写外部脚本来暂时删除日志?

1 个答案:

答案 0 :(得分:3)

您可以使用RotatingFileHandler为您执行日志轮换。在Python文档的Logging Cookbook中有一个例子:

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)