原创博文 转载请注明出处!

参考官方文档: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 purposes
  • INFO: General system information
  • WARNING: 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 ERROR and CRITICAL messages to a paging service, while a second handler logs all messages (including ERRORand CRITICAL messages) 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日志优先级的更多相关文章

  1. Django—logging日志

    简介 Django使用python自带的logging 作为日志打印工具.简单介绍下logging. logging 是线程安全的,其主要由4部分组成: Logger 用户使用的直接接口,将日志传递给 ...

  2. python - django (logging 日志配置和简单使用)

    1. settings 配置 # 配置日志 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 's ...

  3. python的日志模块:logging;django的日志系统;django日志输出时间修改

    Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置 源代码 1.__init__.py包含以下类: StreamHandler Formatt ...

  4. django中介模型,CBV模型,及logging日志配制

    1.中介模型 中介模型,这个是在我们创建表格时,多对多添加的时候应用到的,通过制定ManyToManyField字段中的through参数来定义,为两者的关系新建一个中介class 为什么会产生这个中 ...

  5. Django 的 logging日志文件配置

    在Django的settings配置文件里配置以下信息: import os BASE_LOG_DIR = os.path.join(BASE_DIR , "log") # log ...

  6. ModelViewSet 路由 / django logging配置 / django-debug-toolbar使用

    一.ModelViewSet 路由 因为我们正在使用ViewSet代替View,实际上已经不再需要自己来设计URL的配置了.将资源和视图.URL绑定到一起是一个可以自动完成的过程,只需要使用Route ...

  7. form,ajax注册,logging日志使用

    一.form表单类型提交注册信息 二.ajax版本提交注册信息 <!DOCTYPE html> <html lang="en"> <head> ...

  8. 【转】python模块分析之logging日志(四)

    [转]python模块分析之logging日志(四) python的logging模块是用来写日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分 ...

  9. python模块分析之logging日志(四)

    前言 python的logging模块是用来设置日志的,是python的标准模块. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python模块 ...

随机推荐

  1. 外网连接Mysql云数据库

    购买好Mysql云数据库,这里是腾讯云 在管理中把外网地址开通,然后可以看到本云数据库的外网地址 注意:外网地址com到前面才是连接地址,冒号后面的10057是连接的端口号,可以看下面的连接语句 cm ...

  2. ios 适配问题

    两张图解决

  3. C# IE环境 - 重置IE(WshShell & Rundll32)

    前言 IE问题: 如何重置IE选项? 通过修改注册表,理论上是可行的.前提是你知道重置IE时,有多少注册表项要更改. 如果能直接调用IE的重置设置窗口,并执行重置,能完美重置IE. WshShell ...

  4. SpringSecurity为项目加入权限控制

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  5. C# Obsolete(已弃用方法属性)

    class Realization : Interface { /// <summary> /// 已弃用的方法,Obsolete第二个参数设置为true,调用此方法会产生警告并引起编译器 ...

  6. 11.联结表---SQL

    说明:使用交互式DBMS工具重要的是,要理解联结不是物理实体.换句话说,它在实际的数据库表中并不存在.DBMS会根据需要建立联结,它在查询执行期间一直存在. 一.等值语法:SELECT 字段 FROM ...

  7. mac mysql 编码配置

    mac mysql 编码配置 (mysql目录下没有my.cnf) 想要修改编码发现自己的/usr/local/mysql/support-files里面根本没有my.cnf 安装方式是去mysql官 ...

  8. [Java]hashCode的作用

    一.如何理解hashCode的作用: 以java.lang.Object来理解,JVM每new一个Object,它都会将这个Object丢到一个Hash哈希表中去,这样的话,下次做Object的比较或 ...

  9. rabbitmq 不发送ack消息如何处理: RabbitMQ 消息确认以及消息消费方处理消息时候抛出了异常以

    本篇的代码使用的前面两篇文章<RabbitMQ与Spring整合之消息生产方>和<RabbitMQ与Spring整合之消息消费方>的代码,这两篇文件里配置文件的名称不正确,不可 ...

  10. windows live writer 安装失败 0x80190194 解决方法

    windows live writer已经停止更新,部分安装包无法下载. 改安装windows软件包即可,其中包含windows live writer的安装. 参考: http://jingyan. ...