如何使用Log4J设置我的BlazeDS实现?

Dyr*_*ock 8 java apache-flex logging blazeds

我正在使用BlazeDS在Java Web应用程序上编写Flex应用程序.BlazeDS已在其中记录,但我想将其设置为使用我在我的应用程序中使用的相同日志框架.

有没有办法设置BlazeDS使用Log4J?还是我坚持使用已经在BlazeDS中烘焙的Flex日志记录?

and*_*dri 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

..并使用它,启用它services-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<services-config>
    <logging>
        <target class="example.Slf4jTarget" level="Info">
    </logging>
</services-config>
Run Code Online (Sandbox Code Playgroud)