版权声明:本文为博主原创文章,未经博主允许不得转载。 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文件中的开头就加,日志是写不到文件中的,具体原因还没找到,之后解决了,会更新文章的。