django logging日志优先级
原创博文 转载请注明出处!
参考官方文档:https://docs.djangoproject.com/en/2.1/topics/logging/
Loggers¶
A logger is the entry point into the logging system. Each logger is a named bucket to which messages can be written for processing.
A logger is configured to have a log level. This log level describes the severity of the messages that the logger will handle. Python defines the following log levels:
DEBUG: Low level system information for debugging purposesINFO: General system informationWARNING: Information describing a minor problem that has occurred.ERROR: Information describing a major problem that has occurred.CRITICAL: Information describing a critical problem that has occurred.Each message that is written to the logger is a Log Record. Each log record also has a log level indicating the severity of that specific message. A log record can also contain useful metadata that describes the event that is being logged. This can include details such as a stack trace or an error code.
When a message is given to the logger, the log level of the message is compared to the log level of the logger. If the log level of the message meets or exceeds the log level of the logger itself, the message will undergo further processing. If it doesn’t, the message will be ignored.
Once a logger has determined that a message needs to be processed, it is passed to a Handler.
向 logger 发出 log 时,会将 message 的日志级别与 logger 的日志级别进行比较。如果 log 的级别达到或超过 logger 本身的日志级别,则 log 将进行进一步处理。如果没有,则将忽略该消息。
一旦 logger 确定需要处理 log ,它就会传递给 Handlers 。
个人理解:logger 上设定的 level 是指此种 logger 处理的最低级别,所处理的 log 信息必须要达到这个级别以上
Handlers¶
The handler is the engine that determines what happens to each message in a logger. It describes a particular logging behavior, such as writing a message to the screen, to a file, or to a network socket.
Like loggers, handlers also have a log level. If the log level of a log record doesn’t meet or exceed the level of the handler, the handler will ignore the message.
A logger can have multiple handlers, and each handler can have a different log level. In this way, it is possible to provide different forms of notification depending on the importance of a message. For example, you could install one handler that forwards
ERRORandCRITICALmessages to a paging service, while a second handler logs all messages (includingERRORandCRITICALmessages) to a file for later analysis.
handlers也具有日志级别。如果记录的 log 级别未达到或超过 handler 的级别,则 handler 将忽略该消息。
综上理解:要记录的Log 需要先达到 logger 设定的 level,然后开始 handlers 处理,level 级别达到了的所有 handles 将对此 log 进行处理,否则忽略。
# demo 1:
# setting.py
'handlers': {
'default': {
'level': 'INFO', # 'default'处理器规定处理的最低级别 低于这个级别不处理
'class': 'logging.FileHandler',
'filename': 'logging.log', # log file name
'formatter': 'simple'
},
},
# 记录器
'loggers': {
'django': {
'handlers': ['default'],
'level': 'DEBUG', # 进入'django'这个记录器 的 log 需要的最低级别,低于这个级别不记录
'propagate': False # propagate 向不向更高級別的 loggers 傳遞
}
}, # view.py
logger = logging.getLogger("django")
logger.debug(' index debug---------------\n') # 不记录 级别不够进入 handlers
logger.info(' index info---------------\n') # 记录
logger.warning(' index warning-------------\n') # 记录 # -------------------------------------------------------------
# demo 2
# setting.py
'handlers': {
'default': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'logging.log', # log file name
'formatter': 'simple'
},
},
# 记录器
'loggers': {
'django': {
'handlers': ['default'],
'level': 'INFO',
'propagate': False # propagate 向不向更高級別的 loggers 傳遞
}
},
# view.py
logger = logging.getLogger("django")
logger.debug(' index debug---------------\n') # 不记录 loggers 级别不够
logger.info(' index info---------------\n') # 记录
logger.warning(' index warning-------------\n') # 记录
个人test
有不对的地方欢迎指出
django logging日志优先级的更多相关文章
- Django—logging日志
简介 Django使用python自带的logging 作为日志打印工具.简单介绍下logging. logging 是线程安全的,其主要由4部分组成: Logger 用户使用的直接接口,将日志传递给 ...
- python - django (logging 日志配置和简单使用)
1. settings 配置 # 配置日志 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 's ...
- python的日志模块:logging;django的日志系统;django日志输出时间修改
Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...
- django中介模型,CBV模型,及logging日志配制
1.中介模型 中介模型,这个是在我们创建表格时,多对多添加的时候应用到的,通过制定ManyToManyField字段中的through参数来定义,为两者的关系新建一个中介class 为什么会产生这个中 ...
- Django 的 logging日志文件配置
在Django的settings配置文件里配置以下信息: import os BASE_LOG_DIR = os.path.join(BASE_DIR , "log") # log ...
- ModelViewSet 路由 / django logging配置 / django-debug-toolbar使用
一.ModelViewSet 路由 因为我们正在使用ViewSet代替View,实际上已经不再需要自己来设计URL的配置了.将资源和视图.URL绑定到一起是一个可以自动完成的过程,只需要使用Route ...
- form,ajax注册,logging日志使用
一.form表单类型提交注册信息 二.ajax版本提交注册信息 <!DOCTYPE html> <html lang="en"> <head> ...
- 【转】python模块分析之logging日志(四)
[转]python模块分析之logging日志(四) python的logging模块是用来写日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分 ...
- python模块分析之logging日志(四)
前言 python的logging模块是用来设置日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块 ...
随机推荐
- 今天是 Java 诞生日,Java 24 岁了!
今天是 Java 诞生日,Java 今年 24 岁了,比栈长还年轻..还有得搞,别慌!作为一名Java语言的学习者,对Java的起源和发展有个大概的了解应是必要的. 1991年,Sun公司成立Gree ...
- The database could not be exclusively locked to perform the operation(SQL Server 5030错误解决办法)(转)
Microsoft SQL Server 5030错误解决办法 今天在使用SQL Server时,由于之前创建数据库忘记了设置Collocation,数据库中插入中文字符都是乱码,于是到DataBas ...
- spring boot 参数转换
参数调用方式: 1. localhost:8080/person/properties/to/json body参数设置: 2. localhost:8080/person/json/to/prope ...
- Codeforces 27D(二分染色)
要点 将边作为染色,如果交叉则异色 #include <cstdio> #include <algorithm> #include <functional> usi ...
- Codeforces 126B(kmp)
要点 头尾的最长相同只要一个kmp即可得,于是处理中间部分 扫一遍记录一下前缀的每个位置是否存在一个中间串跟它相同,见代码 如果当前没有,接着用Next数组去一找即可 #include <cst ...
- NOI2015程序自动分析 并查集
有10^9个点,每次给出两个点的关系:权相等或不等,问最后能不能成立 感觉一开始在撕烤一个动态的问题,,,想写一个带权的并查集 结果发现静态询问,那就sb乱搞,懒得手写离散就直接map(卧槽好多细节忘 ...
- TPU的相关资料
1.谷歌 TPU 的强大与局限:TPU/GPU/CPU性能功耗全面对比:http://www.sohu.com/a/134315786_473283 2.谷歌发布TPU论文,75位联合作者,GPU迎来 ...
- Table行合并操作
此方法不可取,但几天心血 保留,已有新想法,稍后会出一个完善的Table行列合并方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- tomcat调优方案Maximum number of threads (200) created for connector with address null and port 8091
1.tomcat6大并发出现:INFO: Maximum number of threads (200) created for connector with address null and por ...
- 关于使用mybatis的分页插件问题
首先我需要导入架包 1.pagehelper 如果你是在mybatis中配置分页‘ 如下代码 <plugins> <plugin interceptor="com.gith ...