最近翻看了下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,代表不删除归档