diff --git a/apps/common/drf/exc_handlers.py b/apps/common/drf/exc_handlers.py index 906224615..f0a016cf4 100644 --- a/apps/common/drf/exc_handlers.py +++ b/apps/common/drf/exc_handlers.py @@ -6,9 +6,10 @@ from rest_framework.views import set_rollback from rest_framework.response import Response from common.exceptions import JMSObjectDoesNotExist -from common.utils import get_logger +from logging import getLogger -logger = get_logger(__name__) +logger = getLogger('drf_exception') +unexpected_exception_logger = getLogger('unexpected_exception') def extract_object_name(exc, index=0): @@ -45,5 +46,7 @@ def common_exception_handler(exc, context): set_rollback() return Response(data, status=exc.status_code, headers=headers) + else: + unexpected_exception_logger.exception('') return None diff --git a/apps/common/utils/common.py b/apps/common/utils/common.py index 63a5afff9..382cd2412 100644 --- a/apps/common/utils/common.py +++ b/apps/common/utils/common.py @@ -11,8 +11,6 @@ import time import ipaddress import psutil -from .timezone import dt_formater - UUID_PATTERN = re.compile(r'\w{8}(-\w{4}){3}-\w{12}') ipip_db = None diff --git a/apps/jumpserver/settings/logging.py b/apps/jumpserver/settings/logging.py index 35eaee3b6..1cd7c70ec 100644 --- a/apps/jumpserver/settings/logging.py +++ b/apps/jumpserver/settings/logging.py @@ -5,6 +5,8 @@ from ..const import PROJECT_DIR, CONFIG LOG_DIR = os.path.join(PROJECT_DIR, 'logs') JUMPSERVER_LOG_FILE = os.path.join(LOG_DIR, 'jumpserver.log') +DRF_EXCEPTION_LOG_FILE = os.path.join(LOG_DIR, 'drf_exception.log') +UNEXPECTED_EXCEPTION_LOG_FILE = os.path.join(LOG_DIR, 'unexpected_exception.log') ANSIBLE_LOG_FILE = os.path.join(LOG_DIR, 'ansible.log') GUNICORN_LOG_FILE = os.path.join(LOG_DIR, 'gunicorn.log') LOG_LEVEL = CONFIG.LOG_LEVEL @@ -20,6 +22,10 @@ LOGGING = { 'datefmt': '%Y-%m-%d %H:%M:%S', 'format': '%(asctime)s [%(module)s %(levelname)s] %(message)s', }, + 'exception': { + 'datefmt': '%Y-%m-%d %H:%M:%S', + 'format': '\n%(asctime)s [%(levelname)s] %(message)s', + }, 'simple': { 'format': '%(levelname)s %(message)s' }, @@ -58,6 +64,24 @@ LOGGING = { 'backupCount': 7, 'filename': ANSIBLE_LOG_FILE, }, + 'drf_exception': { + 'encoding': 'utf8', + 'level': 'DEBUG', + 'class': 'logging.handlers.RotatingFileHandler', + 'formatter': 'exception', + 'maxBytes': 1024 * 1024 * 100, + 'backupCount': 7, + 'filename': DRF_EXCEPTION_LOG_FILE, + }, + 'unexpected_exception': { + 'encoding': 'utf8', + 'level': 'DEBUG', + 'class': 'logging.handlers.RotatingFileHandler', + 'formatter': 'exception', + 'maxBytes': 1024 * 1024 * 100, + 'backupCount': 7, + 'filename': UNEXPECTED_EXCEPTION_LOG_FILE, + }, 'syslog': { 'level': 'INFO', 'class': 'logging.NullHandler', @@ -84,6 +108,14 @@ LOGGING = { 'handlers': ['console', 'file'], 'level': LOG_LEVEL, }, + 'drf_exception': { + 'handlers': ['console', 'drf_exception'], + 'level': LOG_LEVEL, + }, + 'unexpected_exception': { + 'handlers': ['unexpected_exception'], + 'level': LOG_LEVEL, + }, 'ops.ansible_api': { 'handlers': ['console', 'ansible_logs'], 'level': LOG_LEVEL,