нет, из коробки BlazeDS не поддерживает log4j или другие структуры непосредственно.
Однако, очень просто добавить поддержку своей любимой системы ведения журнала; Я использовал следующее, чтобы получить выход в SLF4J:
package example;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import flex.messaging.log.AbstractTarget;
import flex.messaging.log.LogEvent;
public class Slf4jTarget extends AbstractTarget {
// log4j levels: OFF - FATAL - ERROR - WARN - INFO - DEBUG - TRACE - ALL
// blazeds levels: NONE - FATAL - ERROR - WARN - INFO - DEBUG - ALL
@Override
public void logEvent(LogEvent event) {
Logger log = LoggerFactory.getLogger(event.logger.getCategory());
if (event.level >= LogEvent.ERROR)
log.error(event.message, event.throwable);
else if (event.level >= LogEvent.WARN)
log.warn(event.message, event.throwable);
else if (event.level >= LogEvent.INFO)
log.info(event.message, event.throwable);
else if (event.level >= LogEvent.DEBUG)
log.debug(event.message, event.throwable);
else
log.trace(event.message, event.throwable);
}
}
.. и использовать его, включите его в services-config.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<logging>
<target class="example.Slf4jTarget" level="Info">
</logging>
</services-config>
Этот ответ замечательный. Мои комментарии: 1) Мне пришлось переопределить equals() в моем Slf4jTarget, чтобы возвращать true для любого другого экземпляра того же типа, чтобы BlazeDS не регистрировал эту цель дважды 2) Я префикс строки event.logger.getCategory() с "BlazeDS". иметь лучший дескриптор пространства имен при настройке slf4j 3) Я обрезаю сообщения DEBUG до 1000 символов, так как BlazeDS сбрасывает все входящие и исходящие данные – Tom
Также удобно вызвать super() из конструктора – fglez