410013796724260
• Webmoney
R335386147728
Z369087728698
Модуль протоколирования сообщенийМодуль util-logger платформы Jabricks предназначен для протоколирования сообщений бандлов. Сообщения могут выводиться как в консоль, так и записываться во внешние файлы директории logs, которая создается модулем автоматически. Для логирования сообщений бандлов необходимо установить соответствующие параметры в файле инициализации jabrick.ini :
Если флаги в файле инициализации не определены, то используются их значения по умолчанию (false), т.е. флаги считаются «сброшенными» и сообщения не логируются. Также не логируются сообщения, если не установлены уровни сообщений. Уровни сообщенийВ файле инициализации можно использовать следующие значения уровней сообщений : DEBUG, INFO, WARNING, ERROR, SQL, OSGi. Можно логировать сообщения нескольких уровней; для этого следует перечислить их в параметре log.level, используя символ запятой ',' в качестве разделителя. Модуль util-logger непосредственно взаимодействует с модулем реализации механизма логирования org.apache.felix.log, который должен быть включен в приложение. В org.apache.felix.log определены четыре целочисленных уровня сообщений интерфейса org.osgi.service.log.LogService :
В базовом интерфейсном модуле gui-widgets для разработчиков добавлены еще два уровня сообщений :
5. LOG_LEVEL_SQL При разработке бандлов необходимо использовать соответствующие уровни сообщений, определенные либо в интерфейсе org.osgi.service.log.LogService, либо в модуле gui-widgets (при его наследовании). Т.е. модуль util-logger логирует сообщения с уровнями от 1 до 6 классифицируя их соответствующим обозначением. Все сообщения, связанные с работой БД следует логировать с уровнем LOG_LEVEL_SQL. Сообщения фреймворка, связанные с инсталляцией бандлов, перевода бандлов из одного состояния в другое (старт, останов и т.д.), а также регистрация сервисов, логируются с уровнем LOG_LEVEL_OSGi. Протоколирование сообщений в бандлахЧтобы использовать модуль util-logger для протоколирования сообщений в бандлах необходимо :
Следующий листинг демонстрирует определение зависимости org.apache.felix.eventadmin в проектном файле pom.xml, необходимой для протоколирования во время разработки бандла, и включение соответствующих пакетов в секцию <Import-Package> манифеста бандла MANIFEST.MF.
<dependencies> ... <dependency> <groupId>org.apache.felix</groupId> <artifactId> org.apache.felix.eventadmin </artifactId> <version>1.2.2</version> <scope>provided</scope> </dependency> ... </dependencies> ... <Import-Package> ... org.osgi.service.event.*, ... </Import-Package> Пример протоколирования сообщенийНиже представлен код активатора бандла, который можно использовать при разработке модуля для подключения к сервису логирования и отправки ему сообщений. В методе start вызывается метод регистрации сервиса логирования и отправляется сообщение. В методе registerService используется утилитный класс OSGi org.osgi.util.tracker.ServiceTracker для подключения к сервису логирования. Подробнее о сервисах взаимодействия бандлов представлено здесь. При останове бандла (метод stop) необходимо отключиться от сервиса логирования.
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleActivator; import org.osgi.service.log.LogService; import org.osgi.util.tracker.ServiceTracker; public class ModuleActivator implements BundleActivator { ServiceTracker<Object, Object> svcTracker; LogService logService; @Override public void start(final BundleContext context) throws Exception { // ... registerService(context); logMessage (LogService.LOG_INFO, "Module start"); } @Override public void stop(final BundleContext context) throws Exception { if(logService != null) { // close the service tracker logService.close(); logService = null; } } public void registerService(BundleContext context) { String cls = LogService.class.getName(); svcTracker = new ServiceTracker<Object, Object> ( context, cls, null); svcTracker.open(); // grab the service logService = (LogService) svcTracker.getService(); } public void logMessage (final int level, final String message) { if (logService != null) logService.log(level, message); } } Примечание : использование базовых модулей формирования интерфейсов приложения, включающих методы подключения/отключения к сервису логирования, позволяет существенно упростить процедуру протоколирования. Пример вывода сообщений в консольФормат вывода сообщений в консоль и файл идентичен. Ниже представлены сообщения одного «сеанса» работы приложения, выполненные в Уроке 10. Для наглядности и понимания, что делает приложение и интегрированный в него фреймворк Felix в листинг вставлены комментарии, которые отсутствуют в реальном протоколе. После запуска приложения выполняется инсталляция бандлов и старт отдельных модулей, определенных в файле инициализации bundles.ini. Далее в приложении выполняются следующие действия :
Модуль util-logger фиксирует все действия фреймворка (OSGi) и сообщения бандлов (INFO, SQL).
11:48:45 START ~~~~~ Framework CREATED ~~~~~ #~~~~~ Инсталляция бандлов ~~~~~ 10:58:38 START ~~~~~ Framework CREATED ~~~~~ 10:58:40 START Framework init 10:58:40 START Framework start 10:58:40 INFO Install bundles 10:58:40 OSGi org.jabricks.jdialog.base-jdialog : \ INSTALLED 10:58:40 OSGi org.jabricks.jframe.base-jframe : INSTALLED 10:58:40 OSGi org.jabricks.jpanel.base-jpanel : INSTALLED 10:58:41 OSGi org.jabricks.connection.db-connection : \ INSTALLED 10:58:41 OSGi org.jabricks.dbobjects.db-objects : \ INSTALLED 10:58:41 OSGi org.jabricks.locale.form-locale : INSTALLED 10:58:41 OSGi org.jabricks.menu.gui-menu : INSTALLED 10:58:41 OSGi org.jabricks.toolbar.gui-toolbar : \ INSTALLED 10:58:41 OSGi org.jabricks.widgets.gui-widgets : \ INSTALLED 10:58:42 OSGi org.jabricks.currencies.list-currencies : \ INSTALLED 10:58:42 OSGi org.jabricks.exchange.list-exchange : \ INSTALLED 10:58:42 OSGi org.jabricks.measures.list-measures : \ INSTALLED 10:58:42 OSGi derby : INSTALLED 10:58:42 OSGi org.apache.felix.eventadmin : INSTALLED 10:58:42 OSGi org.apache.felix.log : INSTALLED 10:58:42 OSGi org.jabricks.templates.templ-jframe : \ INSTALLED 10:58:43 OSGi org.jabricks.db.util-db-derby : INSTALLED 10:58:43 OSGi org.jabricks.logger.util-logger : INSTALLED 10:58:43 OSGi org.jabricks.resources.util-resources : \ INSTALLED #~~~~~ Старт модуля логирования ~~~~~ 10:58:47 OSGi org.jabricks.logger.util-logger : STARTED #~~~~~ Старт модуля авторизации ~~~~~ 10:58:47 OSGi org.jabricks.db.util-db-derby : RESOLVED 10:58:47 OSGi org.jabricks.connection.db-connection : \ RESOLVED 10:58:47 OSGi org.jabricks.jdialog.base-jdialog : \ RESOLVED 10:58:47 OSGi derby : RESOLVED 10:58:47 OSGi ServiceEvent REGISTERED : \ 'jabricks/LocaleEvent' 10:58:47 OSGi org.jabricks.connection.db-connection : \ STARTED #~~~~~ Подключение к серверу БД ~~~~~ 11:00:00 SQL DAODerby : RegisterDriverManager 11:00:03 SQL org.jabricks.db.DAODerby.createConnection \ connection created #~~~~~ Публикация сообщения 'jabricks/DBConnect' ~~~~~ 11:00:03 SQL send 'jabricks/DBConnect' : CONNECT #~~~~~ Останов модуля авторизации ~~~~~ 11:00:03 OSGi ServiceEvent UNREGISTERING : \ 'jabricks/LocaleEvent' 11:00:03 OSGi org.jabricks.connection.db-connection : \ STOPPED #~~~~~ Старт справочника валюты ~~~~~ 11:00:43 OSGi org.jabricks.currencies.list-currencies :\ RESOLVED 11:00:44 OSGi ServiceEvent REGISTERED : \ 'jabricks/LocaleEvent' 11:00:44 OSGi ServiceEvent REGISTERED : \ 'jabricks/DBConnect' 11:00:44 OSGi org.jabricks.currencies.list-currencies :\ STARTED #~~~~~ Внесение изменений в справочник валюты ~~~~~ 11:00:52 SQL Record in the table \ 'jabricks.jbt_currencies' was updated #~~~~~ Останов справочника валюты ~~~~~ 11:03:22 OSGi ServiceEvent UNREGISTERING : \ 'jabricks/LocaleEvent' 11:03:22 OSGi ServiceEvent UNREGISTERING : \ 'jabricks/DBConnect' 11:03:22 OSGi org.jabricks.currencies.list-currencies :\ STOPPED #~~~~~ Изменение текущей Locale ~~~~~ #~~~~~ Старт модуля form-locale ~~~~~ 11:09:40 OSGi org.jabricks.locale.form-locale : RESOLVED 11:09:40 OSGi org.jabricks.locale.form-locale : STARTED #~~~~~ Получение сообщения 'jjabricks/LocaleEvent' ~~~~~ 11:09:44 INFO org.jabricks.templates.templ-jframe \ get event on topic : jabricks/LocaleEvent #~~~~~ Публикация сообщения 'jjabricks/LocaleEvent' ~~~~~ 11:09:45 INFO send 'jabricks/LocaleEvent' : english #~~~~~ Останов модуля form-locale ~~~~~ 11:09:45 OSGi org.jabricks.locale.form-locale : STOPPED #~~~~~ Старт модуля db-connection ~~~~~ 11:11:20 OSGi ServiceEvent REGISTERED : \ 'jabricks/LocaleEvent' 11:11:20 OSGi org.jabricks.connection.db-connection : \ STARTED #~~~~~ Отключение от сервера БД ~~~~~ 11:11:23 SQL org.jabricks.db.DAODerby.disconnect #~~~~~ Публикация сообщения 'jabricks/DBConnect' ~~~~~ 11:11:23 SQL send 'jabricks/DBConnect' : DISCONNECT #~~~~~ Останов модуля db-connection ~~~~~ 11:11:23 OSGi ServiceEvent UNREGISTERING : \ 'jabricks/LocaleEvent' 11:11:23 OSGi org.jabricks.connection.db-connection : \ STOPPED #~~~~~ Останов программы (главного фрейма) ~~~~~ 11:11:56 OSGi ServiceEvent UNREGISTERING : \ 'jabricks/LocaleEvent' 11:11:56 OSGi ServiceEvent UNREGISTERING : \ 'jabricks/Container/Request' Примечание : в представленных выше сообщениях символ переноса '\' делит строку на две части. ЗависимостиМодуль логирования сообщений util-logger использует следующие бандлы :
Подключение модуля util-loggerДля подключения модуля util-logger в приложение JaBricks необходимо :
Примечание : атрибут @start определяет необходимость старта модуля после «инсталляции» для начала протоколирования сообщений бандлами приложения. GAV параметры модуля util-logger имеют следующие значения :
Подробнее о включении модуля в приложение JaBricks представлено здесь. Скачать util-loggerРассмотренный на странице модуль с компонентами формирования графического интерфейса util-logger упакован в архивный файл util-logger-1.0.0.zip (11.1 Кб). |