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 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章