Улучшен user_logger.py: добавлена обработка ошибок при создании папки и записи в лог, чтобы ошибки не проглатывались, а выводились в консоль.

В bot_promo добавлен вывод в консоль сформированных ссылок (статус-ссылка и QR-картинка) для отладки. Также улучшена обработка ошибок через логирование.
main
pilot 2 months ago
parent 18d340add7
commit e29bdacb3e

@ -71,6 +71,10 @@ def bot_promo(client: Client, message: dict, settings_max: dict) -> bool:
img.save(f"{STATICFILES_DIRS[0]}/client_qr/{file_name}") img.save(f"{STATICFILES_DIRS[0]}/client_qr/{file_name}")
qr_url = f"{BASE_URL}/static/client_qr/{file_name}" qr_url = f"{BASE_URL}/static/client_qr/{file_name}"
# Выводим ссылки в консоль для отладки
print(f"🔍 PROMO DEBUG: статус-ссылка = {url_promo}")
print(f"🔍 PROMO DEBUG: QR-картинка = {qr_url}")
# Логируем сформированные ссылки # Логируем сформированные ссылки
log_user_action( log_user_action(
client=client, client=client,

@ -7,7 +7,11 @@ from max_bot.models import Client
# Папка для логов активности пользователей # Папка для логов активности пользователей
LOG_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'log', 'user_activity') LOG_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'log', 'user_activity')
os.makedirs(LOG_DIR, exist_ok=True)
try:
os.makedirs(LOG_DIR, exist_ok=True)
except Exception as e:
print(f"⚠️ Ошибка создания папки для логов: {e}")
_lock = Lock() _lock = Lock()
@ -26,30 +30,33 @@ def log_user_action(
Логирует действие пользователя в структурированном JSON-формате. Логирует действие пользователя в структурированном JSON-формате.
Запись добавляется в файл user_activity_YYYY-MM-DD.log. Запись добавляется в файл user_activity_YYYY-MM-DD.log.
""" """
timestamp = datetime.now().isoformat() try:
log_entry = { timestamp = datetime.now().isoformat()
"timestamp": timestamp, log_entry = {
"client_id": client.id, "timestamp": timestamp,
"chat_id": chat_id, "client_id": client.id,
"action_type": action_type, "chat_id": chat_id,
"details": details or {}, "action_type": action_type,
} "details": details or {},
if user_query is not None: }
log_entry["user_query"] = user_query if user_query is not None:
if intent is not None: log_entry["user_query"] = user_query
log_entry["intent"] = intent if intent is not None:
if entities is not None: log_entry["intent"] = intent
log_entry["entities"] = entities if entities is not None:
if response is not None: log_entry["entities"] = entities
log_entry["response"] = response if response is not None:
if command is not None: log_entry["response"] = response
log_entry["command"] = command if command is not None:
log_entry["command"] = command
# Определяем имя файла по дате # Определяем имя файла по дате
date_str = datetime.now().strftime("%Y-%m-%d") date_str = datetime.now().strftime("%Y-%m-%d")
log_file = os.path.join(LOG_DIR, f"user_activity_{date_str}.log") log_file = os.path.join(LOG_DIR, f"user_activity_{date_str}.log")
# Потокобезопасная запись # Потокобезопасная запись
with _lock: with _lock:
with open(log_file, 'a', encoding='utf-8') as f: with open(log_file, 'a', encoding='utf-8') as f:
f.write(json.dumps(log_entry, ensure_ascii=False) + '\n') f.write(json.dumps(log_entry, ensure_ascii=False) + '\n')
except Exception as e:
print(f"⚠️ Ошибка записи лога: {e}")

Loading…
Cancel
Save