8

我正在使用 BlazeDS 在 Java Web 应用程序之上编写一个 Flex 应用程序。BlazeDS 内部有日志记录,但我想将其设置为使用与我的应用程序中相同的日志记录框架。

有没有办法设置 BlazeDS 以使用 Log4J?还是我坚持使用已经融入 BlazeDS 的 Flex 日志记录?

4

3 回答 3

13

不,开箱即用的 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>
于 2009-04-09T22:38:19.750 回答
4

使用 CommonsLoggingTarget。

请参阅http://static.springsource.org/spring-flex/docs/1.0.x/javadoc-api/org/springframework/flex/core/CommonsLoggingTarget.html

请注意在 service-config.xml 中设置日志级别。如果将其设置为“All”,并在 log4j.xml 中定义“blazeds”记录器,那么 BlazeDS/LCDS 会生成大量冗余日志消息,这可能会对性能产生重大影响。

于 2010-01-19T19:10:02.560 回答
1

我不相信有任何内置功能可以让您将 Blaze DS 日志输出重定向到 log4j、commons-logging 等。但是这个 JIRA 问题可能对您有用:

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

包括用于重定向输出的 Java 类和 services-config.xml 的示例配置

于 2009-04-09T22:29:13.283 回答