使用模块之前,先进行导入
import logging
在进行开发过程中,需要日志文件帮助我们去定位问题,这就需要区分好每天的日志,TimedRotatingFileHandler 类可以实现每日日志文件的更新。
TimedRotatingFileHandler 类位于 logging.handlers 模块,它支持基于特定时间间隔的磁盘日志文件轮换,在使用之前需导入
from logging.handlers import TimedRotatingFileHandler
代码如下(示例):
import os
import logging
from logging.handlers import TimedRotatingFileHandler
import time
log_path = "logs"
def get_logger(name):
logger = logging.getLogger(name)
#判断目录是否存在,存在不创建,不存在则创建log目录
if os.path.exists(log_path):
pass
else:
os.mkdir(log_path)
# 设置日志基础级别
logger.setLevel(logging.DEBUG)
# 日志格式
formatter = '[%(asctime)s] [%(threadName)s] [line:%(lineno)d] %(levelname)s: %(message)s'
log_formatter = logging.Formatter(formatter)
# 控制台日志
console_handler = logging.StreamHandler()
console_handler.setFormatter(log_formatter)
# info日志文件名
info_file_name = 'info-' + time.strftime(
'%Y-%m-%d', time.localtime(time.time())) + '.log'
"""
#实例化TimedRotatingFileHandler
# filename:日志文件名
# when:日志文件按什么切分。'S'-秒;'M'-分钟;'H'-小时;'D'-天;'W'-周
# 这里需要注意,如果选择 D-天,那么这个不是严格意义上的'天',是从你
# 项目启动开始,过了24小时,才会重新创建一个新的日志文件,如果项目重启,
# 这个时间就会重置。选择'MIDNIGHT'-是指过了凌晨12点,就会创建新的日志
# interval是时间间隔
# backupCount:是保留日志个数。默认的0是不会自动删除掉日志。如果超过这个个数,就会自动删除
"""
info_handler = TimedRotatingFileHandler(filename='logs/' +
info_file_name,
when='MIDNIGHT',
interval=1,
backupCount=3,
encoding='utf-8')
# 设置文件里写入的格式
info_handler.setFormatter(log_formatter)
info_handler.setLevel(logging.INFO)
# 添加日志处理器
logger.addHandler(info_handler)
logger.addHandler(console_handler)
return logger
get_logger(name="test")
1、设置存放日志目录,不存在则创建目录
2、设置日志的级别'DEBUG','INFO', 'WARNING','ERROR','CRITICAL'
3、设置写入日志的格式 '[%(asctime)s] [%(threadName)s] [line:%(lineno)d] %(levelname)s: %(message)s'
4、设置控制台输出
5、设置日志文件名
6、确保每日生成不同日志文件,且能够区分日志生成时间,可用logging.handlers.TimedRotatingFileHandler进行处理,使用之前先进行导入
7、将日志对象添加到logger里
8、进行调用即可 get_logger(name="test")