# DRF Rack # Библиотека классов расширений для Django REST Framework # # Автор: Николай В. Анохин # Все права защищены. Лицензия: MIT """ Параметры конфигурации системы журналирования """ from net.xeaf.rack.utils.settings import Environment from net.xeaf.rack.utils.settings import SettingUtils from net.xeaf.rack.utils.settings.configs.filter import CustomLoggerDebugFilter # # Имя журнала # LOGGER_NAME = Environment.get_str("LOGGER_NAME", "rack") # # Ключи полей, которые необходимо скрывать в журнале # LOGGER_SENSITIVE_KEYS = Environment.get_str_as_list("LOGGER_SENSITIVE_KEYS", "") # # Уровень журналирования # LOG_LEVEL = Environment.get_str("LOG_LEVEL") if SettingUtils.is_debug_mode(): LOG_LEVEL = "DEBUG" else: if LOG_LEVEL == "DEBUG": LOG_LEVEL = "INFO" # # Файлы журналов # LOG_FILE = Environment.get_str_as_file("LOG_FILE") DEBUG_LOG_FILE = Environment.get_str_as_file("DEBUG_LOG_FILE") # # Настройка журнала # LOGGING = { "version": 1, "disable_existing_loggers": False, "filters": { "strict_debug_only": { "()": CustomLoggerDebugFilter, }, }, "formatters": { "custom_format": { "format": "{asctime} [{levelname}] {message}", "datefmt": "%Y-%m-%d %H:%M:%S", "style": "{", }, }, "handlers": { # # Основной лог # "main_file": { "level": "INFO" if LOG_LEVEL == "DEBUG" else LOG_LEVEL, "class": "concurrent_log_handler.ConcurrentRotatingFileHandler", "filename": LOG_FILE, "maxBytes": 1024 * 1024 * 10, "backupCount": 5, "formatter": "custom_format", "encoding": "utf-8", }, # # Лог отладки # "debug_file": { "level": "DEBUG", "class": "concurrent_log_handler.ConcurrentRotatingFileHandler", "filename": DEBUG_LOG_FILE, "maxBytes": 1024 * 1024 * 10, "backupCount": 5, "formatter": "custom_format", "filters": [] if SettingUtils.is_debug_mode() else ["strict_debug_only"], "encoding": "utf-8", }, }, # # Журналы # "loggers": { # Журнал системы LOGGER_NAME: { "handlers": ["main_file", "debug_file"], "level": "DEBUG", "propagate": False, }, # Стандартный журнал "django": { # "handlers": ["main_file", "debug_file"], # Отключаем полностью "'handlers": [], "level": "ERROR", "propagate": False, }, # # Отрезаем вообще всё, кроме реальных падений ядра (500 ошибок вне DRF) # "django.request": { "level": "ERROR", "propagate": True, }, # # Глушим системный спам сторонних библиотек # "urllib3": {"level": "WARNING"}, "botocore": {"level": "WARNING"}, "boto3": {"level": "WARNING"}, }, }