组件名称 | 类名 | 功能描述 |
日志器 | Logger | 提供了程序使用日志的入口 |
处理器 | Handler | 将logger创建的日志记录发送到合适的目的输出 |
格式器 | Formatter | 决定日志记录的最终输出格式 |
过滤器 | Filter | 提供了更细粒度的控制工具来决定输出哪条日志记录,丢弃哪条日志记录 |
方法 | 描述 |
logger.debug() logger.info() logger.warning() logger.error() logger.critical() | 打印日志 |
logger.setLevel() | 设置日志器将会处理的日志消息的最低严重级别 |
logger.addHandler() | 为该logger对象添加一个handler对象 |
logger.addFilter() | 为该logger对象添加一个filter对象 |
Handler | 描述 |
logging.StreamHandler | 将日志消息发送到输出到Stream,如std.out, std.err或任何file-like对象。 |
logging.FileHandler | 将日志消息发送到磁盘文件,默认情况下文件大小会无限增长 |
logging.handlers.RotatingFileHandler | 将日志消息发送到磁盘文件,并支持日志文件按大小切割 |
logging.hanlders.TimedRotatingFileHandler | 将日志消息发送到磁盘文件,并支持日志文件按时间切割 |
logging.handlers.HTTPHandler | 将日志消息以GET或POST的方式发送给一个HTTP服务器 |
logging.handlers.SMTPHandler | 将日志消息发送给一个指定的email地址 |
方法 | 描述 |
handler.setLevel() | 设置handler将会处理的日志消息的最低严重级别 |
handler.setFormatter() | 为handler设置一个格式器对象 |
handler.addFilter() | 为handler添加一个过滤器对象 |
fh = logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0)
将日志信息记录到文件中,以特定的时间间隔切换日志文件。
filename: 日志文件名
when: 时间单位,可选参数
S - Seconds M - Minutes H - Hours D - Days
midnight - roll over at midnight
W{0-6} - roll over on a certain day; 0 - Monday
interval: 时间间隔
backupCount: 日志文件备份数量。如果backupCount大于0,那么当生成新的日志文件时,将只保留backupCount个文件,删除最老的文件。
import logging.handlers
logger = logging.getLogger() logger.setLevel(logging.DEBUG)
# 日志格式
fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s" formatter = logging.Formatter(fmt)
# 输出到文件,每日一个文件
fh = logging.handlers.TimedRotatingFileHandler("./a.log", when='MIDNIGHT', interval=1, backupCount=3) fh.setFormatter(formatter)
fh.setLevel(logging.INFO) logger.addHandler(fh)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |