django的日志管理-logging

django的日志使用python的logging模块

logging的四个模块

---logger-记录器:

日志系统的入口,每个logger都是bucket,可以向这个bucket写入需要处理的信息,logger根据消息的日志级别来进行处理,接收来自大于logging定义的级别的消息,交给handle处理

日志级别分为

  debug--10

  info---20

  warning---30

  error---40

  critical---50

 

---handle-处理器:

handle决定如何处理logger中的消息,比如打印到屏幕,写入到文件中等。与logger一样,也有一个日志级别, 如果消息的日志界别小于定义的级别,则忽略。一个logger可以有多个handle,并且每个handle可以有不同的日志级别

 

--filter-过滤器:

一般用的很少

 

--formatter-格式化

表示文本的格式,通常是用来自定义格式

 

以下为django中日志的配置:

复制代码
#settings.py
import logging
.
.
.

logger = logging.getLogger(__name__)
LOG_DIR = os.path.join(BASE_DIR,'log')
if not os.path.exists(LOG_DIR):
    os.mkdir(LOG_DIR)


LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        # 'verbose': {
        #     'format': '%(levelname)s %(asctime)s %(pathname)s %(module)s %(lineno)s %(message)s ',
        # },
        'verbose': {
            'format': "{'levelname':'%(levelname)s','asctime':'%(asctime)s','module':'%(module)s','name':'%(name)s', 'pathname':'%(pathname)s','message':'%(message)s'}"
        },

        'simple': {
            'format': '{levelname} {message}',
        },
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',     #将日志保存到文件
            'formatter': 'verbose',
            'filename': os.path.join(LOG_DIR,'django.log'),
            'encoding': 'utf-8'
        },
        'default': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',  # 将日志保存到文件
            'formatter': 'verbose',
            'filename': os.path.join(LOG_DIR, 'default.log'),
            'encoding': 'utf-8'
        }
    },
    'loggers': {
        'django': {                 #获取所有日志
            'level': 'DEBUG',
            'handlers': ['file'],
            'propagate': True,      #向上传播
        },

    },
    'root': {       #顶层日志
        'level': 'DEBUG',
        'handlers': ['default'],
    }
}
复制代码
#视图中使用
import logging
logger = logging.getLogger(__name__)

class XXX(APIView):
    def post(self):
        logger.info('xxx')
        logger.error('xxx')

 

posted @   powfu  阅读(291)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示