forum.bitel.ru
http://forum.bitel.ru/

Классы для работы с логами модуля INET
http://forum.bitel.ru/viewtopic.php?f=19&t=9438
Страница 1 из 1

Автор:  Setig [ 14 июл 2014, 15:41 ]
Заголовок сообщения:  Классы для работы с логами модуля INET

Здравствуйте. Перед мной стоит задача создания BGBS скрипта, для оповещения по e-mail, в ситуации когда за некоторое время в модуль INET не поступают логи.

Я столкнулся с проблемой что, не могу найти класс для работы с логами модуля Inet.
Но я столкнулся с интерфейсом InetLogManagementService и методом в нём: inetLogExist(java.lang.Integer deviceId, java.util.Date month)

Мои понимания Java начальные и тут возникает загвоздка: как я понимаю, интерфейс InetLogManagementService не является классом, который можно реализовать для получения списка логов за месяц.
И я не могу найти класс, который реализует эту задачу.

В общем возникает вопрос: правильно ли я понимаю, что из данного интерфейса я ничего не могу взять и нет ли классов в BGBilling в которых реализовано получения списка логов за месяц?

Автор:  stark [ 14 июл 2014, 16:03 ]
Заголовок сообщения:  Re: Классы для работы с логами модуля INET

Есть InetLogManagementServiceImpl, но вам он не нужен, он спрятан для вас.

Вот тут пример получения сервиса.

Автор:  Cromeshnic [ 14 июл 2014, 17:12 ]
Заголовок сообщения:  Re: Классы для работы с логами модуля INET

Логичнее нормальный мониторинг настроить имхо.
Zabbix + JMX например (если есть JMX для логов). Или внешними скриптами смотреть директорию с логами.

Автор:  stark [ 14 июл 2014, 17:20 ]
Заголовок сообщения:  Re: Классы для работы с логами модуля INET

Cromeshnic писал(а):
(если есть JMX для логов).

пока нет, но можно добавить.

Автор:  Setig [ 14 июл 2014, 23:14 ]
Заголовок сообщения:  Re: Классы для работы с логами модуля INET

Спасибо, stark.

Сервис создал, массив загруженных логов получил...

Странно, но у меня выводит следующее:
Код:
int []: {
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
16777215,
2097151,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
}


Массив из 31-го элемента, как я понимаю это дни, то есть 0 элемент = 1 день месяца, 1 элемент = 2 день месяца и так далее...

А как быть, если нужно посмотреть: есть ли логи какого дня, в какое-то время часа?
То есть например узнать был ли загружен лог 14 дня месяца в 15 часов?

Или я не правильно работаю с массивом и надо переопределить возвращающее значение от метода "inetLogExist" ?..

Код который это всё выводит:
Код:
   // Получение текущей даты
   Calendar calendar = new GregorianCalendar();

   // Получение сервиса логов модуля INET
   InetLogManagementService InetLogManagement = ServerContext.get().getService( InetLogManagementService.class, INET_MODULE_ID );

   GregorianCalendar calendar_PrevDay = (Calendar) calendar.clone();
   calendar_PrevDay.add( GregorianCalendar.DAY_OF_MONTH, -1 );

   // Получение логов за месяц
   Result result = InetLogManagement.inetLogExist( INET_ROOT_DEVICE_ID, TimeUtils.convertCalendarToDate( calendar_PrevDay ) );

   print( result.getAttributes().get("logExists") );

Автор:  stark [ 15 июл 2014, 10:26 ]
Заголовок сообщения:  Re: Классы для работы с логами модуля INET

Setig писал(а):
Спасибо, stark.

Сервис создал, массив загруженных логов получил...

Странно, но у меня выводит следующее:
Код:
int []: {
16777215,
16777215,
16777215,



Каждое значение это битовая маска, где каждый бит данные для каждого часа(1 - логи есть за час, 0 - логов нет). Вот запись в двоичной системе
Код:
16777215 = 0000 0000 1111 1111 1111 1111 1111 1111

Это означает что в это день есть логи для всех 24 часов (всего 32 бита поэтому слева нули). Вам надо использовать операции сдвига чтобы проверить конкретный час. Что-то типа этого:

Код:
int logExists [] =  result.getAttributes().get("logExists")
for( int i =0; i < 31; i++)
{
     int value = logExists[i];
     for( int j =0; j < 24; i++)
     {
         //существует ли лог для j-го часа в i-ы день
         boolean isExists = value & (1 << j ) > 0;
     }
}

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/