DJango错误日志生成
setting.py设置
LOGGING = {
'version': 1,'disable_existing_loggers': False,'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
},'simple': {
'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
},},'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue','handlers': {
'console': {
'level': 'DEBUG','filters': ['require_debug_true'],'class': 'logging.StreamHandler','formatter': 'simple'
},'file': {
# 实际开发建议使用WARNING
'level': 'INFO','class': 'logging.handlers.RotatingFileHandler',# 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意BASE_DIR
'filename': os.path.join(os.path.dirname(BASE_DIR),"logs/luffy.log"),# 日志文件的最大值,这里我们设置300M
'maxBytes': 300 * 1024 * 1024,# 日志文件的数量,设置最大日志数量为10
'backupCount': 10,# 日志格式:详细格式
'formatter': 'verbose',# 编码
'encoding': 'utf-8'
},# 日志对象
'loggers': {
'django': {
'level': 'INFO','handlers': ['console','file'],'propagate': True,# 是否让日志信息继续冒泡给其他的日志处理系统
},}
}
exception.py(抛错设置)
# rest_framework.views 下的 exception_handler 处理了所有 drf可控范围内的异常
from rest_framework.views import exception_handler as drf_exception_handler
# drf的异常还是交给 drf_exception_handler,我们只需要处理 drf未处理的异常
from rest_framework.response import Response
from .response import APIResponse
# 自定义异常句柄的原因:要通过 logging 记录异常日志
from .logging import logger
def exception_handler(exc,context):
response = drf_exception_handler(exc,context)
if response is None:
# drf处理不了的异常
error_info = '【%s】【%s】' % (context['view'],exc)
logger.error(error_info)
# return Response({
# 'exception': '服务器异常',# },status=500)
return APIResponse(1,'服务器异常',status=500)
response.exception = True
return response
logging.py
import logging
logger = logging.getLogger('django')
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|