一、如何在django中配置日志器
二、如何调用setting.py的配置信息做为全局使用
首先,在setting中加入日志的相关配置代码:
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'} #日志格式 }, 'filters': { }, 'handlers': { 'mail_admins': { 'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler', 'include_html': True, }, 'default': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': 'log/all.log', #日志输出文件 'maxBytes': 1024*1024*5, #文件大小 'backupCount': 5, #备份份数 'formatter':'standard', #使用哪种formatters日志格式 }, 'error': { 'level':'ERROR', 'class':'logging.handlers.RotatingFileHandler', 'filename': 'log/error.log', 'maxBytes':1024*1024*5, 'backupCount': 5, 'formatter':'standard', }, 'console':{ 'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'standard' }, 'request_handler': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': 'log/script.log', 'maxBytes': 1024*1024*5, 'backupCount': 5, 'formatter':'standard', }, 'scprits_handler': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename':'log/script.log', 'maxBytes': 1024*1024*5, 'backupCount': 5, 'formatter':'standard', } }, 'loggers': { 'django': { 'handlers': ['default', 'console'], 'level': 'DEBUG', 'propagate': False }, 'django.request': { 'handlers': ['request_handler'], 'level': 'DEBUG', 'propagate': False, }, 'scripts': { 'handlers': ['scprits_handler'], 'level': 'INFO', 'propagate': False }, 'blog.views': { 'handlers': ['default', 'error'], 'level': 'DEBUG', 'propagate': True }, 'blog.util':{ 'handlers': ['error'], 'level': 'ERROR', 'propagate': True } } }
注意其中的路径要与自己的文件对应。
这个时候我们在views中自己定义一个错误函数,是可以发现在本地的log文件中返回了错误信息的,并且在调用网页资源的过程中,日志里面也是给了详细的信息反馈的。
接着我尝试在setting中加入全局变量(比如说网页的说明,网页的名字以及其中一般不会被修改的)
#网站的基本信息配置 SITE_NAME = "I'm Yuandong" SITE_DESC = 'Something for nothing' CSDN_SITE = 'https://my.csdn.net/miyudo?locationNum=0&fps=1' ZHIHU_SITE = 'https://www.zhihu.com/people/yuandong-66' MY_WEB = 'https://www.minyuandong.top'这里定义了一系列变量之后,需要在views中定义对应的方法,这里我们采用定义一个函数,返回一个字典的方式来简化相关步骤。
def global_setting(request): return { 'SITE_NAME': settings.SITE_NAME, 'SITE_DSCR': settings.SITE_DESC, 'CSDN_SITE': settings.CSDN_SITE, 'ZHIHU_SITE': settings.ZHIHU_SITE, 'MY_WEB' : settings.MY_WEB, }
于是返回的便是在setting中定义的全局变量了,要改变的话,直接html文件中做修改即可,需要注意的是,调用的时候需要在自己的template文件中加入views中新定义的方法,它会自动调用,这里就是在option中加入
'blog.views.global_setting',