Логер

Комментарии ()

Механизм логирования событий характерезируется:

  • датой создания (date_create)
  • уровнем (level:[debug,info,warn,error,fatal])
  • идентификатором пользователя, который создал запись (create_by)
  • идентификатором пользователя, к которому имеет отношение лог-запись(user_id)
  • идентификатором типа лог-записи (type_id: под типом подразумевает объект логирования. Например: пользователь, денежные средства, записи и так далее. 
    Правила именования алиаса: _LOG_TYPE_{тип лога}
  • идентификатором типа операции лог-записи (operation_id, зависит от type_id)
    Правила именования алиаса: _LOG_OPERATION_{тип операции}
  • идентификатором кода выполнения (code_id: зависит от type_id. Для каждого типа лог-записи, свой код. Например для типа user(пользователь) могут быть коды: ошибка авторизации, успешная авторизация, пользователь забанен и так далее...
    Правила именования алиаса: _LOG_CODE_{тип операции}
    Коды с 1 до 10 зарезервированы, и являются общедоступными
     
    Код Алиас Значение
    1 LOG_CODE_OK Успешное выполнение
    2 LOG_CODE_ERROR Ошибка выполнения
    3   Зарезервировано
    4   Зарезервировано
    5   Зарезервировано
    6   Зарезервировано
    7   Зарезервировано
    8   Зарезервировано
    9   Зарезервировано
    10   Зарезервировано
  • самим сообщением(text)
  • идентификатором записи (data_id) таблицы (log_type.table), которая связана с типом лог-записи. Связаная таблица может быть как дополнительная лог-таблица, так и рабочая таблица. Например: для типа auth существует лог-таблица log_auth, в которую вноситься дата, логин и ip-адрес всех попыток авторизации; для типа money существует таблица money (которая кстати не является лог-таблицой) в которую заносятся все финансовые движения (зачисление, списание денежных средств и так далее)
  • асоциативным масивом дополнительных данных (data),  структура которого зависит от типа лог-записи, значения которого будут добавлены в связную таблицу типа, id записи будет присвоен автоматически параметру data_id. Параметр data_id имеет преимущество перед data (если заданы два параметра одновременно, используется data_id

Логер существует в виде отдельного класса, документация тут

Документация по теме тут,тут

Создание лог-записи

Пример

$log = new Log();

$log_array_data=array('user_id'=>$user->getIdByLogin(),'ip'=>'192.168.0.10');

$log_array=array('text'=>'Успешная авторизация',
                                 'user_id'=>$user->getIdByLogin(),
                                 'create_by'=>-2,
                                 'level'=>'info',
                                 'type_id'=>_LOG_USER,
                                 'operation_id'=>_LOG_AUTH,
                                 'cody_id=>_LOG_OK',
                                 'data'=>$log_array_data);

$log->log($log_array);

В даном примере создается лог-запись (типа пользователь), для операции авторизации с успешным кодом выполнения(_LOG_OK). В параметр data передается массив дополнительной информации , в даном случае   ip-адресс и идентификатор пользователя. 

Дополнительная информация

Если в метод log передан параметр data (при этом параметр data_id отсутствует), то необходимо сохранить дополнительную информацию. Если присутствует метод сохранения дополнительно информации по типу лога и типу операции лога setLog{type}{operation} (в нашем примере setLogUserAuth), то передаем туда масив с данными. Если метода по типу нету, используется метод сохранения дополнительной информации по умолчанию setLog. Алгоритм его работы прост - сохранить переданый масив в связную таблицу (log_type.table) , и вернуть id-записи. Если связной таблицы нет, тогда на этом все.

Получение лог-записей

 


Webit.in.ua 2013