logging
для записи действий пользователей.
Настройте различные уровни логирования (например, INFO
для обычных действий, WARNING
для подозрительных).
Включите в логируемые сообщения информацию о пользователе (ID, имя), времени действия, и само действие (например, "Пользователь X отредактировал запись Y").
Рассмотрите использование структурированного логирования (JSON) для упрощения анализа логов.
Обеспечьте ротацию логов для предотвращения переполнения диска.
Для аудита действий пользователей в Python приложении с использованием логирования, можно реализовать следующий подход:
Пример кода:
import logging
import json
# Настройка логгера
logger = logging.getLogger('user_audit')
logger.setLevel(logging.INFO)
# Создание обработчика (handler) для записи в файл
handler = logging.FileHandler('user_audit.log')
handler.setLevel(logging.INFO)
# Создание форматировщика (formatter)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# Добавление обработчика к логгеру
logger.addHandler(handler)
def log_user_action(user_id, action_type, details=None):
"""
Логирует действие пользователя.
Args:
user_id: ID пользователя.
action_type: Тип действия (например, "login", "create_object").
details: Дополнительные детали действия (опционально).
"""
log_data = {
'user_id': user_id,
'action_type': action_type,
'details': details or {}
}
logger.info(json.dumps(log_data))
# Пример использования:
user_id = 123
log_user_action(user_id, 'login')
log_user_action(user_id, 'create_object', {'object_type': 'product', 'object_id': 456})
try:
# Некая операция, которая может вызвать ошибку
result = 10 / 0
except Exception as e:
log_user_action(user_id, 'error', {'error_message': str(e)})
Дополнительные соображения: