import logging, time
from logging.handlers import TimedRotatingFileHandler
logging.basicConfig(filename="run.log", level=logging.INFO, format="%(asctime)s %(levelname)s : %(message)s", datefmt="%Y-%m-%d %H:%M:%S",)
logger = logging.getLogger()
logger.setLevel(logging.INFO);
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s : %(message)s")
log_file_handler = TimedRotatingFileHandler(filename="runs", when="S", interval=1, backupCount=3)
log_file_handler.setFormatter(formatter)
log_file_handler.setLevel(logging.INFO)
log_file_handler.suffix += ".log"
logger.addHandler(log_file_handler)
for n in range(4):
print(n)
logger.info(time.localtime())
logging.info(time.localtime())
time.sleep(1)
参数解析
basicConfig
- filename:日志文件名,在TimedRotatingFileHandler中作前缀名
- level:日志级别
NOTSET(0)、DEBUG(10)、INFO(20)、WARNING(30)、ERROR(40)、CRITICAL(50)
logging 执行时会输出大于等于设置的日志级别的日志信息 - format:日志输出格式
- asctime:日志时间
- name:日志对象的名称
- levelname:日志级别名称
- message:日志信息
- datefmt:日志附带日期时间的格式
TimedRotatingFileHandler
- when:间隔时间单位(默认H)
“S”: Seconds
“M”: Minutes
“H”: Hours
“D”: Days
“W”: Week day (0=Monday) - interval:滚动周期(默认1),单位由when指定,比如:when=’D’,interval=1,表示每天产生一个日志文件
backupCount: 表示日志文件的保留个数; 不写则全保存
suffix:日志文件名后缀