本文主要是介绍2021-08-03-DJ-023 django日志配置与解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
日志
官方 文档 对日志的描述
1.常见配置
#日志配置区,LOGGING
LOGGING={'version':1,'formatters':{'simple':{'format':'[%(asctime)s %(name)s] %(message)s','datefmt':'%Y-%m-%d %H:%M:%S'}},'handlers':{'out':{'class':'logging.StreamHandler','formatter':'simple','level':'DEBUG'},'file':{'class':'logging.FileHandler','formatter':'simple','level':'INFO','filename':'mylog.log'}},'loggers':{'django':{'handlers':['out','file'],'level':'DEBUG','propagate':True},'mylog':{'handlers':['file'],'level':'INFO','propagate':True},}
}
2.内容分析
2.1组成部分
LOGGING配置常有下面四个部分组成:
Formatters:格式化
Handlers:处理器
Loggers:记录器
Filters:过滤器
2.2详细介绍 上面的配置
LOGGING={ 日 志设置的标准名称
‘version’:1.0, 版本
‘formatters’:{ 一、 格式化部分
‘simple’:{ 一种格式的名称
‘format’:’[%(asctime)s %(name)s] %(message)s’, 输出格式,括号内是参数,%s是字符串格式
‘datefmt’:’%Y-%m-%d %H:%M:%S’ 日期格式
}
},
‘handlers’:{ 二、处理器部分
‘out’:{ 一个处理器的名称,名称 都可以自己编
‘class’:‘logging.StreamHandler’,
‘formatter’:‘simple’, 格式选simple
‘level’:‘DEBUG’ 日志处理的级别:DEBUG:排查故障时使用的低级别系统信息
},'file':{ 一个处理器名称'class':'logging.FileHandler','formatter':'simple', 格式选simple'level':'INFO', 日志处理的级别:INFO:一般的系统信息'filename':'mylog.log' 存储文件名}
},
'loggers':{ 三、记录器部分'django':{ 一个记录器名字'handlers':['out','file'], 这个记录器包含的处理器列表'level':'DEBUG', 日志记录级别,等同于os.getenv('DJANGO_LOG_LEVEL', 'INFO'),'propagate':True 传播},'mylog':{ 一个记录器名字'handlers':['file'], 这个记录器包含的处理器列表'level':'INFO', 日志记录的级别'propagate':True 传播},}
}
2.3日志级别
日志级别表示只有这个级别以上的消息系统才提示
日志级别有:
DEBUG:排查故障时使用的低级别系统信息
INFO:一般的系统信息
WARNING:描述系统发生了一些小问题的信息
ERROR:描述系统发生了大问题的信息
CRITICAL:描述系统发生严重问题的信息
禁用默认的日志配置,在settings中设置
LOGGING_CONFIG = None
或者在LOGGING中 加 disable_existing_loggers 键为 True
handlers 里面的class有哪些请参考:【Python基础】Python模块之Logging(四)——常用handlers的使用
propagate是传播, 是否让日志信息继续冒泡给其他的日志处理系统,子级向父级传播
对日志的参数介绍的比较好的一篇博客是这个Django中的日志详解。
3.框架中操作
自己引发日志 记录
配置好日志记录参数后在上节做的中间件里做这件事情
import logging
class LoginCheckMiddleware(MiddlewareMixin):def process_request(self,request):print('login_checkMiddleware,request',request.path,request.META['REMOTE_ADDR'])excludelist=['/main/login','/main/imgcode']if request.path not in excludelist:#验证 用户是否已经登录if not request.COOKIES.get('token'):ip=request.path,request.META['REMOTE_ADDR']path=request.get_raw_uri()msg='%s->%s'%(ip,path)logging.getLogger('mylog').warning(msg)return HttpResponseRedirect('/main/login')
logging.getLogger('mylog').warning(msg)
这句话表示用mylog记录器,打印一个warning级别的消息,在这个记录器里面,是以文件的形式的,所以消息会在日志文件里记录
我们现在去浏览器中触发这个消息
里面的三条warning就是以我们自定义的方式触发的
这篇关于2021-08-03-DJ-023 django日志配置与解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!