Протоколирование в GWT.

07.07.2016
Последняя редакция: 08.01.2017
Иванов Аркадий

 

Процедуры протоколирования в GWT-приложении очень похожи на процедуры из пакета java.utils.logging. В описании от Google как раз и рекомендуется изучить java.utils.logging, чтобы понять методику протоколирования в GWT.

Опишу использование протоколирования на примере для программы на стороне клиента.

В простейшем случае в программе получаю корневой объект Logger и, используя метод warning этого объекта, выдаю сообщение уровня WARNING:

import java.util.logging.Logger;
...
Logger logger = Logger.getLogger("");
logger.warning("Warning!!!");

Чтобы это работало, должен быть включен модуль протоколирования в app.gwt.xml файле и разрешены те обработчики, которые нам удобны в отладке:

<!-- Other module inherits -->
<inherits name="com.google.gwt.logging.Logging"/>

<!-- Set properties for logging -->
<set-property name="gwt.logging.logLevel" value="WARNING"/>
<set-property name="gwt.logging.enabled" value="TRUE"/>
<set-property name="gwt.logging.consoleHandler" value="ENABLED"/>
<set-property name="gwt.logging.simpleRemoteHandler" value="ENABLED" />

На экране будет дополнительное окно. Все сообщения из программы, которые мы посылаем с помощью методов объекта logger , попадают в это окноЭто обеспечивает обработик consoleHandler.

Также сообщения будут отправляться на сервер обработчиком simpeRemoteHandler.
Когда подключён simpleRemoteHandler, нужно, чтобы на стороне сервера работал сервлет, получающий сообщения от программы-клиента. Для этого провожу настройку в web.xml :

<!-- remote logging -->
<servlet>
    <servlet-name>remoteLogging</servlet-name>
    <servlet-class>com.google.gwt.logging.server.RemoteLoggingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>remoteLogging</servlet-name>
    <url-pattern>/app/remote_logging</url-pattern>
</servlet-mapping>