Python日志记录包logbook(补充)

Published: 2017-07-04

Tags: Python

本文总阅读量

最近翻看了下logbook的文档,在上篇的基础上,进行一些补充

使用NestedSetup消除嵌套可以放在一个函数中,这样更为灵活一些


def setup_logging(level='debug', filename='data.log'):

    ''' logging setting '''

    level = level.upper()
    format_string = "[{record.time:%Y-%m-%d %H:%M:%S}] {record.message}"

    handlers = [
        logbook.NullHandler()
    ]

    handlers.append(logbook.FileHandler(filename, format_string=format_string, level=level))
    handlers.append(logbook.StreamHandler(sys.stdout, format_string=format_string, level=level, bubble=True))

    return logbook.NestedSetup(handlers)



if __name__ == '__main__':


    setup = setup_logging()

    with setup.threadbound():
        main()

日志按大小分割

logbook.RotatingFileHandler(filename, max_size=4096, backup_count=5, bubble=True)

如上的handle可以代替FileHandler,它会按照设定的大小进行分割,当日志超过这个大小后,会重命名为"app.log.1","app.log.2"这样的日志,设定backup_count参数后,默认为5,当备份文件数量多余5个时,会丢弃最旧的日志

日志按日期分割

logbook.TimedRotatingFileHandler(filename, date_format='%Y-%m-%d', backup_count=0, bubble=True)

这个handle是按照日期切割日志的,如果设置的filename是"date.log",那么日志会按照"date-2017-07-04.log"这样的格式保存日志,日志会按照日期的设定进行分割,所以添加了"%H"就会按照小时分割,添加了"%M"就会按照分钟切割,backup_count此处设置为0,代表不删除归档