django中的添加日志功能

在settings中配置以下代码

#LOGGING_DIR 日志文件存放目录
LOGGING_DIR = "logs" # 日志存放路径
if not os.path.exists(LOGGING_DIR):
    os.mkdir(LOGGING_DIR)
import logging
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': { #格式化器
    'standard': {
        'format': '[%(levelname)s][%(asctime)s][%(filename)s][%(funcName)s][%(lineno)d] > %(message)s'
        },
    'simple': {
        'format': '[%(levelname)s]> %(message)s'
        },
    },
    'filters': {
    'require_debug_true': {
        '()': 'django.utils.log.RequireDebugTrue',
        },
 },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'default': {                                       # 用于文件输出
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '%s/django.log' % LOGGING_DIR,          #具体日志文件的名字
            'maxBytes': 1024 * 1024 * 2,
            'backupCount': 1,
            'formatter':'standard',
            'encoding': 'utf-8',
        },
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '%s/error.log' % LOGGING_DIR,
            'maxBytes': 1024 * 1024 * 2,
            'backupCount': 2,
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
        'export': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': '%s/export.log' % LOGGING_DIR,
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 2,
            'formatter': 'standard',
            'encoding': "utf-8"
        },
        'modify': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': '%s/modify.log' % LOGGING_DIR,
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 2,
            'formatter': 'standard',
            'encoding': "utf-8"
        }
    },
    'loggers': {    #日志分配到哪个handlers中
        'mydjango': {
            'handlers': ['console','default','error'],         # 上线之后可以把'console'移除
            'level':'DEBUG',
            'propagate': True,       # 向不向更高级别的logger传递
        }
        ,
        'export': {             # 名为 'export'的logger还单独处理
            'handlers': ['console','default','error',"export"],
            'level': 'DEBUG',
            'propagate': False,
        },
        'modify': {  # 名为 'modify'的logger还单独处理
            'handlers': ['console', 'default', 'error', "modify"],
            'level': 'DEBUG',
            'propagate': False,
        },
 }
}

在模块中应用如下:

def parse_result_func(ch, method, properties, body):
    ### 逻辑程序
    logger.info("%s start to Analytical data..." %(queue_name))
    logger.info(" [接收到的请求头] Received %r [接收到的请求体] Received %r" % (properties.headers, body))
    try:
        req_res = json.loads(body)
        req_head = dict(properties.headers)
        project_id = str(req_res["projectId"])
        eid = str(req_res["eid"])
        ssb_bus_id = str(req_head["ssb-bus-id"])
        logger.info(ssb_bus_id)
        logger.info("Analytical data successful")
    except Exception as e:
        logger.error("there is a failed cause : rabbitmq parameter not correct %s"%(e) )
        logger.error("failed info -- properties : %s  body : %s"%(properties,body))
        ch.basic_reject(delivery_tag=method.delivery_tag, requeue=False)  # 接收到消息后会给rabbitmq发送一个拒绝
        return 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章