django中日志logging的配置以及处理

django中日志logging的配置以及处理

  • 在设置文件一般是settings.py配置logging
  • 使用log写入文件
    • 实例
  • 日志等级分析
  • logging 流程
  • Flask配置logging和解释

在设置文件一般是settings.py配置logging

这里配置了三个handler分别对应三个文件,三个loggers对应相对的handler

# 设置log文件地址
LOG_PATH = 'logs'
# 设置日志
LOGGING = {
    # 规定只能这样写
    'version': 1,
    # True表示禁用loggers
    'disable_existing_loggers': False,
    # 指定文件写入的格式——这里写了两个不同的格式,方便在后面不同情况需要的时候使用
    'formatters': {
        'default': {
            'format': '%(levelno)s %(funcName)s %(asctime)s %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(asctime)s %(message)s'
        }
    },
    'handlers': {
        'code_handlers': {
            'level': 'DEBUG',
            # 日志文件指定为多大(5M), 超过大小(5M)重新命名,然后写新的日志文件
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 5 * 1024 * 1024,
            # 储存到的文件地址
            'filename': '%s/log.txt' % LOG_PATH,
            'formatter': 'default'
        },
        'users_handlers': {
        	
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 5 * 1024 * 1024,
            'filename': '%s/users_log.txt' % LOG_PATH,
            'formatter': 'default'
        },
        'uauth_handlers': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'maxBytes': 5 * 1024 * 1024,
            'filename': '%s/uauth_log.txt' % LOG_PATH,
            'formatter': 'simple'
        }
    },
    'loggers': {
        'code': {
        	# 主要记录验证码信息
            'handlers': ['code_handlers'],
            'level': 'INFO'
        },
        'users': {
        	# 用户信息,注册登录及其他
            'handlers': ['users_handlers'],
            'level': 'INFO'
        },
        'auth': {
            'handlers': ['uauth_handlers'],
            'level': 'INFO'
        }
    },
}

使用log写入文件

  • 导入logging
  • 如果在用到log的view.py中,想使用users这个日志,就写:
  • log=logging.getLogger(‘users’)
  • log.error()
  • 在日志内容中传递变量,log.error(“Get html error, %s” % (e))

实例

import logging
# 参数填设置里面loggers字典的key值
log = logging.getLogger('users')

# 这是在对应的方法里截取出来的
# 校验手机号码格式,是否存在
   if not re.match('^1[3456789][\d]{9}$', phone):
       log.error('手机格式不对:' + ' ' + phone)

日志等级分析

  • debug: debug级输出,可以截获取所有等级的输出,主要的应用场景问题的诊断
  • info:info 级输出,主要用来记录关键节点的信息,确定程序是否正常预期完成
  • warning:warning级输出,与warn相同,警告信息,还是可以运行
  • error:error级输出,错误信息,导致某些功能不能正常运行
  • critical :critical级输出,严重错误信息,系统即将或已经崩溃

logging 流程

官方的 logging 模块工作流程图如下:

从下图中我们可以看出看到这几种 Python 类型,Logger、LogRecord、Filter、Handler、Formatter。

类型说明:

  • Logger:日志,暴露函数给应用程序,基于日志记录器和过滤器级别决定哪些日志有效。
  • LogRecord :日志记录器,将日志传到相应的处理器处理。
  • Handler :处理器, 将(日志记录器产生的)日志记录发送至合适的目的地。
  • Filter :过滤器, 提供了更好的粒度控制,它可以决定输出哪些日志记录。
  • Formatter:格式化器, 指明了最终输出中日志记录的布局。

django中日志logging的配置以及处理_第1张图片

Flask配置logging和解释

flask的全局日志配置,文件名使用了a模式,也就是你取的名字后面加上.1 .2 等只到备份计数满

import logging
from logging.handlers import RotatingFileHandler

# 日志等级的设置
logging.basicConfig(level=logging.DEBUG)
# 创建日志记录器,每个日志路径,大小,保存日志的上限
# 这里参数是路径,最大存储内存,计数(因为默认是a模式,存满自动新增文件)
file_log_handler = RotatingFileHandler(filename='logs/log.txt', maxBytes=1024*1024, backupCount=10)
# 设置日志格式     日志等级     日志信息   日志行数 
formatter = logging.Formatter('%(levelname)s %(message)s %(lineno)d')  # 可以设置更多内容,具体ctrl加左键看py文件
# 将日志记录器指定日志格式
file_log_handler.setFormatter(formatter)
# 为全局的日志工具对象添加日志记录器
logging.getLogger().addHandler(file_log_handler)

不需要写,也有日志内容,因为是debug等级

你可能感兴趣的:(Django)