django_logging

django使用python自带的logging打印日志

logging 是线程安全的,其主要由4部分组成:

Logger 
用户使用的直接接口,将日志传递给Handler
Handler 
控制日志输出到哪里,console,file… 
一个logger可以有多个Handler
Filter 
控制哪些日志可以从logger流向Handler
Formatter 
控制日志的格式

 

BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
LOGGING = {
    'version': 1,  # 保留字
    'disable_existing_loggers': False,  # 禁用已经存在的logger实例
    # 日志文件的格式
    'formatters': {
        # 详细的日志格式
        'standard': {
            'format': '[%(asctime)s][%(pathname)s %(module)s:%(lineno)d][%(levelname)s][%(message)s]'
        },
        # 简单的日志格式
        'simple': {
            'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
        },
    },
    # 过滤器
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    # 处理器
    'handlers': {
        # 默认的
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, "cms.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 3,  # 最多备份几个
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
    },
    'loggers': {
       # 默认的logger应用如下配置
        '': {
            'handlers': ['default',],  # 上线之后可以把'console'移除
            'level': 'DEBUG',
            'propagate': True,  # 向不向更高级别的logger传递
        },
    },
}
#在setting里定义log配置

  

import logging
logger = logging.getLogger('default')

logger.info('url:%s method:%s'% (request.path, request.method))


#在业务代码中创建default handlers的实例
#使用info级别输出日志

  

[2019-03-15 10:03:51,033][E:\Python\cms\deploy\views.py views:27][INFO][url:/deploy/room_addconfig/ method:POST]
#实际的日志输出

  

  

posted @ 2019-03-15 10:32  jabbok  阅读(176)  评论(0编辑  收藏  举报