| 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/  | 
|