Konfigurasi Logging Django

Di dalam pengembangan perangkat lunak, log sangat penting. Berikut adalah konfigurasi logging yang sering saya gunakan saat bekerja dengan proyek Django.

PATH_LOG = os.path.join(BASE_DIR, "log")
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'default': {
            'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
                      '[%(levelname)s][%(message)s]'
        },
        'short': {
            'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
        },
        'simple': {
            'format': '%(message)s'
        }
    },
    'filters': {
        'debug_only': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['debug_only'],
            'class': 'logging.StreamHandler',
            'formatter': 'short'
        },
        'file_info': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_info.log"),
            'maxBytes': 1024 * 1024 * 50,
            'backupCount': 3,
            'formatter': 'default',
            'encoding': 'utf-8',
        },
        'file_time': {
            'level': 'INFO',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_info.log"),
            'backupCount': 3,
            'when': 'D',
            'formatter': 'default',
            'encoding': 'utf-8',
        },
        'file_error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_error.log"),
            'maxBytes': 1024 * 1024 * 5,
            'backupCount': 5,
            'formatter': 'default',
            'encoding': 'utf-8',
        },
        'file_collect': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_collect.log"),
            'maxBytes': 1024 * 1024 * 50,
            'backupCount': 5,
            'formatter': 'simple',
            'encoding': 'utf-8'
        }
    },
    'loggers': {
        '': {
            'handlers': ['file_info', 'console', 'file_error'],
            'level': 'DEBUG',
            'propagate': True
        },
        'collector': {
            'handlers': ['console', 'file_collect'],
            'level': 'INFO'
        }
    },
}
# Konfigurasi file log
PATH_LOG = os.path.join(BASE_DIR, "log")  # Direktori penyimpanan file log
LOGGING = {  # Pengaturan log
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'default': {
            'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
                      '[%(levelname)s][%(message)s]'
        },
        'short': {
            'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
        },
        'simple': {
            'format': '%(message)s'
        }
    },
    'filters': {
        'debug_only': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['debug_only'],
            'class': 'logging.StreamHandler',
            'formatter': 'short'
        },
        'file_info': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_info.log"),
            'maxBytes': 1024 * 1024 * 50,
            'backupCount': 3,
            'formatter': 'default',
            'encoding': 'utf-8',
        },
        'file_time': {
            'level': 'INFO',
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_info.log"),
            'backupCount': 3,
            'when': 'D',
            'formatter': 'default',
            'encoding': 'utf-8',
        },
        'file_error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_error.log"),
            'maxBytes': 1024 * 1024 * 5,
            'backupCount': 5,
            'formatter': 'default',
            'encoding': 'utf-8',
        },
        'file_collect': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(PATH_LOG, "app_collect.log"),
            'maxBytes': 1024 * 1024 * 50,
            'backupCount': 5,
            'formatter': 'simple',
            'encoding': 'utf-8'
        }
    },
    'loggers': {
        '': {
            'handlers': ['file_info', 'console', 'file_error'],
            'level': 'DEBUG',
            'propagate': True
        },
        'collector': {
            'handlers': ['console', 'file_collect'],
            'level': 'INFO'
        }
    },
}

Bentuk penjelasan lengkap### Penggunaan

views.py:

...

import logging

# Membuat logger dengan nama modul saat ini
logger = logging.getLogger(__name__)
# Membuat logger dengan nama khusus
collector_logger = logging.getLogger('collector')

Setelah membuat folder log di direktori utama, Anda bisa mulai menulis log.

Thẻ: Django logging python file handler formatter

Đăng vào ngày 9 tháng 10 lúc 14:38