4. Логирование работы Smarty¶
4.1. Логи Smarty¶
Записи в логах имеют следующий вид:
%(timestamp)% %(log level)% %(module)%:%(code line number)% %(function)%[%(pid)%.%(thread id)%] %(message text)%
Сообщение (message text) состоит из названия события и дополнительного контекста.
Пример записи в логе:
Fri Mar 24 10:22:35+0300 2017 DEBUG api:621 get[83630.Thread-3] SOME_EVENT 'ip'='127.0.0.1' args=['foo', 'bar']
В этом примере:
- Fri
- день недели
- Mar
- месяц
- 24
- дата
- 10:22:35
- локальное время в таймзоне, которая указана в settings.py в константе TIME_ZONE
- +0300
- смещение относительно UTC
- 2017
- год
- DEBUG
- уровень лога
- api:621
- название файла и номер строки
- get[83630.Thread-3]
- название функции, pid и имя треда
- SOME_EVENT
- название события
- ip и args
- дополнительный контекст
Уровень лога выстваляется в настройках проекта(smarty/settings/settings_<local>.py). Например, чтобы выставить уровень INFO для лога запросов к api, необходимо добавить следующий код:
LOGGING['handlers']['smarty_api_requests_handler']['level'] = "INFO"
События в зависимости от типа группируются в разных файлах. По умолчанию, логи сохраняются по адресу /var/log/microimpuls/smarty/.
4.1.1. smarty_main - основной лог¶
Типы событий:
URLS_INITIALIZED¶
Конфигурация Smarty инициализирована. Происходит во время старта приложения, дополнительный контекст:
available_apps- доступные модули
События, необработанные другими логгерами¶
Происходит во время ошибки, необходимо обратиться к разработчику для решения проблемы.
Дополнительный контекст: локальные переменные функции, в которой произошла ошибка.
4.1.2. smarty_accounts - лог абонентов¶
Типы событий:
LOGIN_SUCCESS¶
Успешная авторизация, контекст:
login_type- тип логина (мультилогин, базовое устройство, дополнительное устройство)login_method- метод логина (по абонементу и паролю, только по абонементу, только по UID устройства)params- параметры запроса
LOGIN_ERROR¶
Ошибка авторизации, контекст:
reason- причина ошибки:- account_does_not_exist - аккаунт не существует - абонемент или пароль или device_uid неверный
- account_is_not_active - аккаунт не активен
- client_does_not_exist - неверный client_id или api_key
- basic_device_sessions_limit - превышен лимит сессий на базовом устройстве
- account_deivce_invalid - такое базовое устройство уже существует
- external_api_error - ошибка запроса к внешней системе (например, к внешнему биллингу)
- unknown_error - неизвестная ошибка (сопровождается stacktrace’ом)
params- параметры запроса
ACCOUNT_DEVICE_ERROR¶
Ошибка при создании устройства аккаунта, контекст:
account- аккаунтdevice- устройствоdevice_uid- UID устройстваclient- оператор
ACCOUNT_ACTIVATED¶
Аккаунт был активирован, контекст:
activation_result- ответ, который вернула внешняя системаparams- параметры запроса
ACCOUNT_TARIFFS_ASSIGNED¶
Добавление тарифов аккаунту, контекст:
account_id- идентификатор аккаунтаtariffs_ids- список идентификаторов подключенных тарифов
ACCOUNT_TARIFFS_REMOVED¶
Удаление тарифов у аккаунта, контекст:
account_id- идентификатор аккаунтаtariffs_ids- список идентификаторов удаленных тарифов
CUSTOMER_CHANGED¶
Изменение абонента, контекст:
customer_id- идентификатор абонента- изменённые поля
CUSTOMER_TARIFFS_ASSIGNED¶
Добавление тарифов абоненту, контекст:
customer_id- идентификатор абонентаtariffs_ids- список идентификаторов подключенных тарифов
CUSTOMER_TARIFFS_REMOVED¶
Удаление тарифов у абонента, контекст:
customer_id- идентификатор абонентаtariffs_ids- список идентификаторов удаленных тарифов
ACCOUNT_DEVICE_REMOVED¶
Удаление устройства аккаунта, контекст:
account_id- идентификатор аккаунтаdevice_uid- идентификатор устройства
4.1.3. smarty_billing_out - запросы к внешним системам¶
INIT_ERROR¶
Ошибка инициализации обработчика API, контекст:
kwargs- аргументы, переданные в класс обработчикаapi_client_class- название класса обработчика API- stacktrace
CUSTOMER_BALANCE_REQUEST_ERROR¶
Ошибка при запросе баланса, контекст:
api_client_class- название класса обработчика APIparams- параметры запроса- stacktrace
CUSTOMER_BALANCE_REQUEST_SUCCESS¶
Успешный запрос баланса, контекст:
api_client_class- название класса обработчика APIparams- параметры запросаresult- результат запроса
CUSTOMER_PAYMENT_LIST_REQUEST_ERROR¶
Ошибка при запросе списка транзакций, контекст:
api_client_class- название класса обработчика APIparams- параметры запроса- stacktrace
CUSTOMER_PAYMENT_LIST_REQUEST_SUCCESS¶
Успешный запрос списка транзакций, контекст:
api_client_class- название класса обработчика APIparams- параметры запроса- result - результат запроса
VIDEO_ACTIONS_LIST_REQUEST_ERROR¶
Ошибка при запросе вариантов действий с видео, контекст:
api_client_class- название класса обработчика APIparams- параметры запроса- stacktrace
VIDEO_ACTIONS_LIST_REQUEST_SUCCESS¶
Успешный запрос вариантов действий с видео, контекст:
api_client_class- название класса обработчика APIparams- параметры запроса- result - результат запроса
VIDEO_ACTION_REQUEST_ERROR¶
Ошибка при попытке произвести действие с видео, контекст:
api_client_class- название класса обработчика APIparams- параметры запроса- stacktrace
VIDEO_ACTION_REQUEST_SUCCESS¶
Успешное действие с видео, контекст:
api_client_class- название класса обработчика APIparams- параметры запроса- result - результат запроса
4.1.4. smarty_billing_in - входящие запросы к Billing API¶
BILLING_REQUEST_ERROR¶
Ошибка при запросе к Billing API, контекст:
url- URL метода, к которому производился запросip- IP-адрес, с которого производлися запросargs- аргументы запросаerror_message- сообщение об ошибкеerror- код ошибки
BILLING_REQUEST_SUCCESS¶
Успешный запрос в биллинг, контекст:
url- URL метода, к которому производился запросip- IP-адрес, с которого производлися запросargs- аргументы запроса
4.1.5. smarty_cache - события, связанные с кешированием¶
OBJECT_CACHED¶
Обьект закеширован, контекст:
object- кешируемый обьектtimeout- время, по истечении которого обьект будет удален из кешаkey- ключ обьекта в кешеdeps- обьекты, при изменении которых кешируемый обьект должен быть инвалидирован
OBJECT_INVALIDATED¶
Обьект инвалидирован, контекст:
object- обьект, который был удален из кешаdeps_key- ключ обьекта, где находятся ключи связанных обьектов, которые тоже должны быть инвалидированы
4.1.6. smarty_messaging - лог отправленных сообщений для аккаунтов¶
MESSAGE_CREATED¶
Создано сообщение, контекст:
account- аккаунт, которому было отправлено сообщениеsubject- тема сообщенияtext- текст сообщения
MESSAGE_SEND¶
Сообщение отправлено, контекст:
account- аккаунт, которому было отправлено сообщениеsubject- тема сообщенияtext- текст сообщенияuuid- идентификатор сообщения
MESSAGE_DELETED¶
Сообщение удалено, дополнительный контекст:
account- аккаунт, которому было отправлено сообщениеsubject- тема сообщенияtext- текст сообщенияuuid- идентификатор сообщения
4.1.7. smarty_management - лог периодических команд¶
MANAGEMENT_COMMAND_SUCCESS¶
Успешное выполнение команды, дополнительный контекст:
command- название командыexecution_time- время выполнения
MANAGEMENT_COMMAND_ERROR¶
Ошибка выполнения команды, дополнительный контекст:
command- название команды- stacktrace
4.1.8. smarty_epg - лог импорта EPG¶
EPG_CHANNEL_IMPORTED¶
Программы для канала успешно импортированы, дополнительный контекст:
epg_channel- каналsource- источник EPGprograms_imported- количество импортированных программ
EPG_CHANNEL_IMPORT_ERROR¶
Ошибка при импорте программ, дополнительный контекст:
epg_channel- каналsource- источник EPG- stacktrace
EPG_IMPORT_FINISHED¶
Импорт программ завершен, дополнительный контекст:
channels_processed- количество обработанных каналовprogramms_imported- количество импортированных программ
EPG_REMOVED¶
В ходе парсинга были удалены старые записи, дополнительный контекст:
epg_channel- каналsource- источник epgremoved_objects- удаленные обьекты
EPG_TIME_OVERLAP¶
Время окончания предыдущей программы больше времени начала текущей, дополнительный контекст:
epg_channel- каналsource- источник epgprogram_name- название программыprevious_program_name- название предыдущей программыprogram_time_begin- время начала текущей программыprevious_time_end- время окончания предыдущей программы
EPG_TIME_HOLE¶
Время окончания предыдущей программы меньше времени начала текущей, дополнительный контекст:
epg_channel- каналsource- источник epgprogram_name- название программыprevious_program_name- название предыдущей программыprogram_time_begin- время начала текущей программыprevious_time_end- время окончания предыдущей программы
EPG_NAME_DOUBLE¶
Название текущей программы совпадает с предыдущей, дополнительный контекст:
epg_channel- каналsource- источник epgprogram_name- название программы
4.1.9. smarty_content_requests - запросы на получение ссылки/адреса потока через TVMW API¶
CONTENT_REQUEST_FAIL¶
Произошла необработанная ошибка в процессе запроса, необходимо обратиться к разработчику.
Дополнительный контекст:
url- URL метода, к которому производился запросparams- параметры запроса- stacktrace
CONTENT_REQUEST_ERROR¶
Обработанная ошибка в процессе запроса, дополнительный контекст:
url- URL метода, к которому производился запросparams- параметры запроса
Возможные причины:
- неверные параметры запроса
- устаревший ключ авторизации
- запрос к устравшем данным (например, попытка воспроизвести слишком старую передачу из архива)
CONTENT_REQUEST_SUCCESS¶
Успешный запрос, ссылка получена, дополнительный контекст:
url- URL метода, к которому производился запросparams- параметры запроса- дополнительная информация, в т.ч. адрес потока (в зависимости от метода)
CLIENT_CHANNELS_NOT_FOUND¶
В кеше не обнаружены каналы для данного Client ID,
возможно был сброшен кеш или произошла ошибка выполнения команды cache_channel_list, дополнительный контекст:
client- Client ID
4.1.10. smarty_portal - лог событий портала¶
PORTAL_EVENT¶
Событие в портале, дополнительный контекст:
event_description- описание событияip- IP-адрес устройства абонентаdevice_uid- идентификатор устройстваscreen_name- название экранаuser_agent- User-Agent устройства
4.1.11. smarty_stream_services - лог стриминг-сервисов¶
STREAM_SERVICE_CHECKING_ERROR¶
Ошибка при проверке доступности стриминг-сервиса, дополнительный контекст:
stream_service- стриминг-сервисwas_available_before- указывает, был ли стриминг-сервис доступен ранееcheck_ping_success- была ли успешной проверка пингом (опционально)check_tcp_success- была ли успешной проверка попыткой открыть сокет (опционально)check_http_success- была ли успешной проверка попыткой открыть URL (опционально)check_is_alive_success- была ли успешной проверка is_alive (опционально)- stacktrace
STREAM_SERVICE_CHECKING_SUCCESS¶
Успешная проверка доступности стриминг-сервиса, дополнительный контекст:
stream_service- стриминг-сервисwas_available_before- указывает, был ли стриминг-сервис доступен ранееcheck_ping_success- проверка пингом была успешной (опционально)check_tcp_success- проверка попыткой открыть сокет была успешной (опционально)check_http_success- проверка попыткой открыть URL была успешной (опционально)check_is_alive_success- проверка is_alive была успешной (опционально)
4.1.12. smarty_admin - лог панели администрирования Smarty¶
ADMIN_REQUEST¶
Запрос к административному интерфейсу, дополнительный контекст:
user- пользователь, осуществивший запросip- IP пользовтаеляpath- путь запросаuser_agent- User-Agent браузера
4.1.13. smarty_videoservices - лог обращений к видеосервисам¶
VIDEOSERVICES_REQUEST¶
Запрос пользователя в Smarty на выполнение команды:
ip- IP пользовтаеляuser_agent- User-Agent браузераuser- пользователь, осуществивший запросpath- путь запроса
VIDEOSERVICES_API_REQUEST¶
Запрос Smarty к видеосервису:
host- тип и адрес видеосервисаargs- аргументы запросаcommand- вызываемый методmessage- ответ сервера (только при ошибке)
4.1.14. smarty_payment - лог оплаты¶
NOTIFY_ERROR¶
Ошибка обработки сообщения нотификации, дополнительный контекст:
client- ID клиента в платёжном шлюзе.transaction- ID транзакции.payment_source- название платёжного шлюза.params- параметры запроса.error- описание ошибки.
Возможные причины ошибки:
- Неверная настройка платёжного шлюза.
- Передача неверных параметров платёжному шлюзу.
- Платёж не прошёл.
NOTIFY_SUCCESS¶
Успешная нотификация, дополнительный контекст:
client- ID клиента в платёжном шлюзе.transaction- ID транзакции.payment_source- название платёжного шлюза.params- параметры запроса.
PAYTURE_REQUEST¶
Запрос к платёжному шлюзу Payture:
url- URL API Payture, на который выполняется запрос.args- аргументы запроса.response- ответ от API в виде XML.