我正在使用 BlazeDS 在 Java Web 应用程序之上编写一个 Flex 应用程序。BlazeDS 内部有日志记录,但我想将其设置为使用与我的应用程序中相同的日志记录框架。
有没有办法设置 BlazeDS 以使用 Log4J?还是我坚持使用已经融入 BlazeDS 的 Flex 日志记录?
我正在使用 BlazeDS 在 Java Web 应用程序之上编写一个 Flex 应用程序。BlazeDS 内部有日志记录,但我想将其设置为使用与我的应用程序中相同的日志记录框架。
有没有办法设置 BlazeDS 以使用 Log4J?还是我坚持使用已经融入 BlazeDS 的 Flex 日志记录?
不,开箱即用的 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>
使用 CommonsLoggingTarget。
请注意在 service-config.xml 中设置日志级别。如果将其设置为“All”,并在 log4j.xml 中定义“blazeds”记录器,那么 BlazeDS/LCDS 会生成大量冗余日志消息,这可能会对性能产生重大影响。
我不相信有任何内置功能可以让您将 Blaze DS 日志输出重定向到 log4j、commons-logging 等。但是这个 JIRA 问题可能对您有用:
http://jira.springframework.org/browse/FLEX-18
包括用于重定向输出的 Java 类和 services-config.xml 的示例配置