12 KiB
راهنمای لاگهای Live Session API
این مستند توضیح میدهد که هر API چه لاگهایی تولید میکند و چگونه میتوان از آنها برای debug استفاده کرد.
📋 فرمت لاگها
همه لاگها با یک prefix مشخص شروع میشوند:
[LiveSession Create]- مربوط به ساخت روم[LiveSession Token]- مربوط به گرفتن توکن ورود[Online Validate]- مربوط به اعتبارسنجی وضعیت دوره
🔹 API: ساخت روم (Create Room)
Endpoint: POST /api/courses/<course-slug>/online/room/create/
جریان لاگها:
-
شروع درخواست:
INFO [LiveSession Create] Request from user_id=10 for course=algebra-10 -
بررسی دسترسی:
- موفق:
INFO [LiveSession Create] Permission granted for user_id=10 course=algebra-10 - رد شده:
WARNING [LiveSession Create] Permission denied - user_id=27 course=algebra-10
- موفق:
-
فراخوانی PlugNMeet:
INFO [LiveSession Create] Calling PlugNMeet API - room_id=algebra-10-20231014102530 course=algebra-10 -
نتیجه PlugNMeet:
- موفق:
INFO [LiveSession Create] PlugNMeet room created successfully - room_id=algebra-10-20231014102530 - خطای پیکربندی:
ERROR [LiveSession Create] Configuration error - PLUGNMEET_API_KEY is not configured - خطای API:
ERROR [LiveSession Create] PlugNMeet API error - room_id=algebra-10-20231014102530 error=Room already exists
- موفق:
-
ذخیره در دیتابیس:
- Session جدید:
INFO [LiveSession Create] New session created - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10 - Session موجود:
INFO [LiveSession Create] Existing session reactivated - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10 INFO [LiveSession Create] Session updated - session_id=7 fields=['subject', 'started_at']
- Session جدید:
-
نتیجه نهایی:
INFO [LiveSession Create] Success - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10 user_id=10
سناریوهای خطا:
| خطا | لاگ | دلیل |
|---|---|---|
| Permission Denied | WARNING [LiveSession Create] Permission denied - user_id=27 course=algebra-10 |
کاربر استاد نیست |
| Configuration Error | ERROR [LiveSession Create] Configuration error - ... |
تنظیمات PlugNMeet ناقص |
| PlugNMeet API Error | ERROR [LiveSession Create] PlugNMeet API error - ... |
سرویس PlugNMeet پاسخ خطا داده |
🔹 API: گرفتن توکن (Get Join Token)
Endpoint: POST /api/courses/online/room/token/
جریان لاگها:
-
شروع درخواست:
INFO [LiveSession Token] Request from user_id=27 for course=algebra-10 -
پیدا کردن دوره:
- موفق:
(بدون لاگ - به مرحله بعد میرود) - پیدا نشد:
WARNING [LiveSession Token] Course not found - course=algebra-10 user_id=27
- موفق:
-
بررسی تنظیمات دوره:
- دوره آنلاین نیست:
WARNING [LiveSession Token] Course not configured for online - course=algebra-10 user_id=27
- دوره آنلاین نیست:
-
پیدا کردن Session فعال:
- موفق:
INFO [LiveSession Token] Active session found - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10 - پیدا نشد:
WARNING [LiveSession Token] No active session found - course=algebra-10 user_id=27
- موفق:
-
تشخیص نقش کاربر:
INFO [LiveSession Token] User role determined - user_id=27 role=student course=algebra-10یا
INFO [LiveSession Token] User role determined - user_id=10 role=professor course=algebra-10 -
بررسی دسترسی (برای دانشجو):
- ثبتنام نشده:
WARNING [LiveSession Token] Access denied - user_id=27 not enrolled in course=algebra-10
- ثبتنام نشده:
-
درخواست توکن از PlugNMeet:
INFO [LiveSession Token] Requesting token from PlugNMeet - room_id=algebra-10-20231014102530 user_id=27 role=student -
نتیجه PlugNMeet:
- موفق:
INFO [LiveSession Token] Token generated successfully - room_id=algebra-10-20231014102530 user_id=27 - خطا:
ERROR [LiveSession Token] Configuration error - PLUGNMEET_API_KEY is not configuredیا
ERROR [LiveSession Token] PlugNMeet API error - room_id=algebra-10-20231014102530 user_id=27 error=Room not found
- موفق:
-
نتیجه نهایی:
INFO [LiveSession Token] Success - room_id=algebra-10-20231014102530 user_id=27 role=student course=algebra-10
سناریوهای خطا:
| خطا | لاگ | دلیل |
|---|---|---|
| Course Not Found | WARNING [LiveSession Token] Course not found - ... |
slug اشتباه است |
| Course Not Online | WARNING [LiveSession Token] Course not configured for online - ... |
دوره آنلاین نیست |
| No Active Session | WARNING [LiveSession Token] No active session found - ... |
هیچ session فعالی وجود ندارد |
| Access Denied | WARNING [LiveSession Token] Access denied - user_id=X not enrolled in course=Y |
دانشجو در کلاس ثبتنام نکرده |
| PlugNMeet Error | ERROR [LiveSession Token] PlugNMeet API error - ... |
مشکل در سرویس PlugNMeet |
🔹 API: اعتبارسنجی (Online Validate)
Endpoint: GET /api/courses/<course-slug>/online/validate/
جریان لاگها:
-
شروع درخواست:
INFO [Online Validate] Request received -
Decode توکن:
- موفق:
INFO [Online Validate] Token decoded successfully - خطا:
ERROR [Online Validate] Token decode failed - error=Token has expired
- موفق:
-
بررسی Payload:
- نامعتبر:
WARNING [Online Validate] Invalid token payload - course_id=None user_id=10
- نامعتبر:
-
شروع پردازش:
INFO [Online Validate] Processing for user_id=10 course_id=42 -
پیدا کردن دوره:
INFO [Online Validate] Course found - slug=algebra-10 is_online=True -
ساخت Metadata:
DEBUG [Online Validate Metadata] user_id=10 course=algebra-10 can_manage=True is_online=True can_join=True -
نتیجه نهایی:
INFO [Online Validate] Success - user_id=10 course=algebra-10 can_create=False can_join=True
سناریوهای خطا:
| خطا | لاگ | دلیل |
|---|---|---|
| Token Decode Error | ERROR [Online Validate] Token decode failed - ... |
توکن منقضی یا نامعتبر |
| Invalid Payload | WARNING [Online Validate] Invalid token payload - ... |
payload توکن ناقص است |
🔍 نحوه استفاده از لاگها برای Debug
1. بررسی جریان کامل یک درخواست:
برای دنبال کردن یک درخواست خاص، بر اساس user_id یا course فیلتر کنید:
# برای user خاص
tail -f /var/log/app.log | grep "user_id=27"
# برای course خاص
tail -f /var/log/app.log | grep "course=algebra-10"
# برای room خاص
tail -f /var/log/app.log | grep "room_id=algebra-10-20231014102530"
2. پیدا کردن خطاها:
# همه خطاهای LiveSession
tail -f /var/log/app.log | grep -E "\[LiveSession (Create|Token)\]" | grep ERROR
# خطاهای PlugNMeet
tail -f /var/log/app.log | grep "PlugNMeet API error"
# خطاهای دسترسی
tail -f /var/log/app.log | grep -E "(Permission denied|Access denied)"
3. بررسی وضعیت سیستم:
# همه درخواستهای ساخت روم
tail -f /var/log/app.log | grep "\[LiveSession Create\] Request"
# همه درخواستهای توکن
tail -f /var/log/app.log | grep "\[LiveSession Token\] Request"
# تشخیص نقش کاربران
tail -f /var/log/app.log | grep "User role determined"
4. آمار سریع:
# تعداد room های ساخته شده امروز
grep "LiveSession Create.*Success" /var/log/app.log | grep "$(date +%Y-%m-%d)" | wc -l
# تعداد توکنهای صادر شده
grep "LiveSession Token.*Success" /var/log/app.log | grep "$(date +%Y-%m-%d)" | wc -l
# تعداد خطاها
grep "ERROR.*LiveSession" /var/log/app.log | grep "$(date +%Y-%m-%d)" | wc -l
⚙️ تنظیمات Logging
برای فعال کردن لاگها، در settings.py:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} {asctime} {module} {message}',
'style': '{',
},
},
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.FileHandler',
'filename': '/var/log/app.log',
'formatter': 'verbose',
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
},
'loggers': {
'apps.course.views.live_session': {
'handlers': ['file', 'console'],
'level': 'INFO',
'propagate': False,
},
'apps.course.views.course': {
'handlers': ['file', 'console'],
'level': 'INFO',
'propagate': False,
},
},
}
سطوح لاگ:
- INFO: جریان عادی - شروع درخواست، موفقیت عملیات
- WARNING: وضعیت غیرعادی اما قابل کنترل - دسترسی رد شده، دوره پیدا نشد
- ERROR: خطاهای سیستم - مشکل PlugNMeet، خطای پیکربندی
- DEBUG: جزئیات بیشتر - ساخت metadata، مقادیر داخلی
برای debug بیشتر، level را به DEBUG تغییر دهید.
📊 مثال: جریان کامل یک Session
INFO [LiveSession Create] Request from user_id=10 for course=algebra-10
INFO [LiveSession Create] Permission granted for user_id=10 course=algebra-10
INFO [LiveSession Create] Calling PlugNMeet API - room_id=algebra-10-20231014102530 course=algebra-10
INFO [LiveSession Create] PlugNMeet room created successfully - room_id=algebra-10-20231014102530
INFO [LiveSession Create] New session created - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10
INFO [LiveSession Create] Success - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10 user_id=10
INFO [LiveSession Token] Request from user_id=10 for course=algebra-10
INFO [LiveSession Token] Active session found - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10
INFO [LiveSession Token] User role determined - user_id=10 role=professor course=algebra-10
INFO [LiveSession Token] Requesting token from PlugNMeet - room_id=algebra-10-20231014102530 user_id=10 role=professor
INFO [LiveSession Token] Token generated successfully - room_id=algebra-10-20231014102530 user_id=10
INFO [LiveSession Token] Success - room_id=algebra-10-20231014102530 user_id=10 role=professor course=algebra-10
INFO [LiveSession Token] Request from user_id=27 for course=algebra-10
INFO [LiveSession Token] Active session found - session_id=7 room_id=algebra-10-20231014102530 course=algebra-10
INFO [LiveSession Token] User role determined - user_id=27 role=student course=algebra-10
INFO [LiveSession Token] Requesting token from PlugNMeet - room_id=algebra-10-20231014102530 user_id=27 role=student
INFO [LiveSession Token] Token generated successfully - room_id=algebra-10-20231014102530 user_id=27
INFO [LiveSession Token] Success - room_id=algebra-10-20231014102530 user_id=27 role=student course=algebra-10
این جریان نشان میدهد:
- استاد روم را ساخت
- استاد توکن گرفت و وارد شد (role=professor)
- دانشجو توکن گرفت و وارد شد (role=student)