在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