Как я могу настроить свою реализацию BlazeDS с Log4J? - PullRequest
8 голосов
/ 09 апреля 2009

Я пишу приложение Flex поверх веб-приложения Java с использованием BlazeDS. BlazeDS имеет ведение журнала внутри него, но я хочу настроить его на использование той же структуры ведения журнала, что и в моем приложении.

Есть ли способ настроить BlazeDS на использование Log4J? Или я застрял в журнале Flex, который уже встроен в BlazeDS?

Ответы [ 3 ]

13 голосов
/ 10 апреля 2009

Нет, из коробки 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>
4 голосов
/ 19 января 2010

Использовать CommonsLoggingTarget.

См. http://static.springsource.org/spring-flex/docs/1.0.x/javadoc-api/org/springframework/flex/core/CommonsLoggingTarget.html.

Просто будьте осторожны с настройкой уровня журнала в service-config.xml. Если вы установите для него значение «Все» и определите регистратор «blazeds» в log4j.xml, тогда будет много избыточных сообщений журнала, генерируемых BlazeDS / LCDS, что может оказать значительное влияние на производительность.

1 голос
/ 10 апреля 2009

Я не верю, что есть что-то встроенное, что позволяет перенаправлять вывод журнала Blaze DS в log4j, commons-logging и т. Д. Однако эта проблема JIRA может быть вам полезна:

http://jira.springframework.org/browse/FLEX-18

Включает класс Java для перенаправления вывода и пример конфигурации для services-config.xml

...