栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Django】logging日志输出到指定位置(拿来即用)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Django】logging日志输出到指定位置(拿来即用)

想必日志对于问题定位的重要性,不言而喻吧
那此章节,我们就来梳理下logging模块日志的相关知识吧

一、logging日志流处理流程 基础知识 1. 四大组件
  1. Logger(日志器): 提供应用程序所使用的接口
  2. Handler(处理器):将logger创建的日志输出到指定的位置,如 文件,console控制台,网络等
  3. Filter(过滤器):更细粒度的控制具体是输出哪条日志
  4. Formatter(格式器):控制日志输出格式
2. 四大组件间关系:

Logger是入口,Handler是真正的执行者,Handler可以通过Filter 和 Formatter对需要输出的日志内容做过滤和格式化。

3.logging模块的日志级别

loggging模块将日志分为以下日志等级

  1. DEBUG: 最详细的日志信息,应用场景:问题诊断
  2. INFO: 关键节点信息,应用场景:记录预期的系统正常工作信息
  3. WARNING: 发生不期望的场景时需记录的信息,用作提示警醒,但是此时系统一切正常
  4. ERROR: 当某个问题产生导致某功能不能正常使用时需记录的信息
  5. CRITICAL:当发生严重的错误,导致系统无法继续正常运行
二、logging模块在Django项目中的应用 1. 日志配置(settings文件)

以下内容配置:控制台日志全部输出到文件、控制台console

import logging

LOGGING = {
    'version': 1,   # 指明dictConnfig的版本,目前就只有一个版本
    'disable_existing_loggers': False,   # 表示是否禁用所有的已经存在的日志配置
    'formatters': {   # 格式器
        'verbose': {
            'format': '[%(asctime)s] [%(levelname)s] %(module)s %(process)s %(thread)s %(message)s',
        },
        'standard': {   # 标准
            'format': '[%(asctime)s] [%(levelname)s] %(message)s',
        },
    },
    # 'filters':{},
    'handlers': {   # 处理器,在这里定义了两个个处理器. 用来定义具体处理日志的方式,可以定义多种,"default"就是默认方式,"console"就是打印到控制台方式。files是写入到文件的方式,注意使用的class不同
        'files': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': './log/run.armand.info.log',  # 日志输出文件
            'formatter': 'verbose',  # 指定formatters日志格式
            'maxBytes': 1024*1024*5,  # 文件大小
            'encoding': 'utf-8',
        },
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        },
        'default': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': './log/all/all.log',  # 日志输出文件
            'formatter': 'standard',  # 使用哪种formatters日志格式
            # 'maxBytes': 1024*1024*5,  # 文件大小  class为logging.FileHandler时不能设置文件大小
            'encoding': 'utf-8',
        },
    },
    'loggers': {  # log记录器,配置之后就会对应的输出日志
        'django': {  # django记录器,它将所有 INFO 或更高等级的消息传递给3个处理程序——files、console 和 default
            'handlers': ['files', 'console', 'default'],  # 同时输出到console和文件
            'level': 'INFO',
            'propagate': True,  # 向上接受更高级别日志
        },
    }
}
2. logging模块使用:
logger = logging.getLogger('django')

logger.info('%s 进入帮助页面', request.user.username)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012510.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号