django中的日志文件按照日期分割(TimedRotatingFileHandler处理器)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27437781/article/details/81565027

如果对于Django中的logging模块不了解,可以去看博主的上一篇文章

https://blog.csdn.net/qq_27437781/article/details/81564813

在此,我们就直接说如何在项目中写代码了。

首先我们新建一个py文件,用来存放logging 的配置代码

代码如下:

import logging
from logging.handlers import TimedRotatingFileHandler
import re
from opdata.settings import BASE_DIR

#设置日志记录到文件的格式
log_fmt1 = '%(asctime)s \"%(pathname)s:%(module)s:%(funcName)s:%(lineno)d\" [%(levelname)s]- %(message)s'

formatter = logging.Formatter(log_fmt1)
#利用TimedRotatingFileHandler处理器来实现按天数分割日志文件
# 里面参数的含义分别是:filename 记录日志的文件名 参数when决定了时间间隔的类型,参数interval决定了多少的时间间隔。
# 如when=‘D’,interval=2,就是指两天的时间间隔,backupCount决定了能留几个日志文件。超过数量就会丢弃掉老的日志文件。
#when的参数决定了时间间隔的类型。两者之间的关系如下:

 # 'S'         |  秒
 #
 # 'M'         |  分
 #
 # 'H'         |  时
 #
 # 'D'         |  天
 #
 # 'W0'-'W6'   |  周一至周日
 #
 # 'midnight'  |  每天的凌晨
 #utc参数表示UTC时间
log_file_handler = TimedRotatingFileHandler(filename=BASE_DIR+"/log/opdata.log",
                                            when="midnight", interval=1, backupCount=1, encoding='utf-8')
#为文件添加后缀
log_file_handler.suffix = "%Y-%m-%d"
#匹配的正则会根据when中的类型不同而不同
log_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}$")
log_file_handler.setFormatter(formatter)
log_file_handler.setLevel(logging.DEBUG)

接下来就是在views中使用了。

import logging
from utils.opdata_log import log_file_handler
logger = logging.getLogger('django')

选择默认的django,此时日志不仅会打印到控制台,还可以记录到文件中。

在views中的函数中使用的时候,我们需要先把控制器加到logger实例中

logger.addHandler(log_file_handler)

然后再通过    logger.info("*****")   往文件中记录你要记录的内容。

ps:再同一个函数中多个地方记录内容的话,只需再函数的开始的位置,加代码logger.addHandler(log_file_handler)即可。

如果是在不同的函数内用logger记录内容,那么就需要在每一个要记录内容的函数中都要加上代码logger.addHandler(log_file_handler)。若是只是在views文件中的开头就加,日志是写不到文件中的,具体原因还没找到,之后解决了,会更新文章的。

猜你喜欢

转载自blog.csdn.net/qq_27437781/article/details/81565027