2009-04-09 14 views
8

저는 BlazeDS를 사용하여 Java 웹 응용 프로그램 위에 Flex 응용 프로그램을 작성하고 있습니다. BlazeDS는 내부에 로그인하지만, 응용 프로그램에있는 것과 동일한 로깅 프레임 워크를 사용하도록 설정하려고합니다.Log4J로 BlazeDS 구현을 어떻게 설정할 수 있습니까?

Log4J를 사용하기 위해 BlazeDS를 설정하는 방법이 있습니까? 아니면 BlazeDS에 이미 구워진 Flex 로깅 작업에 박혀 있습니까?

답변

13

없음의 출력 및 샘플 구성을 리디렉션하는 자바 클래스를 포함, 박스 블레이즈 DS에서 직접 log4j에 또는 다른 프레임 워크를 지원하지 않습니다.

그러나 즐겨 사용하는 로깅 프레임 워크에 대한 지원을 추가하는 것은 매우 간단합니다. ..

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> 
+0

이 답변은 훌륭합니다. 내 의견 : 1) 내 Slf4jTarget에서 equals()를 재정 의하여 BlazeDS가 해당 대상을 두 번 등록하는 것을 방지하기 위해 동일한 유형의 다른 인스턴스에 대해 true를 반환해야합니다. 2) event.logger.getCategory() 문자열에 접두사를 붙입니다. "블레이즈 DS." slaf4j를 구성 할 때 더 나은 네임 스페이스 핸들을 가짐 3) BlazeDS가 모든 입출력 데이터를 덤프하므로 DEBUG 메시지를 1000 자로 자릅니다. – Tom

+0

생성자에서 super()를 호출하는 것이 편리합니다. – fglez

1

난 아무것도가 내장되어 그 평민 로깅 등 그러나이 JIRA 문제가 당신에게 유용 할 수 있습니다, 당신은 블레이즈 DS 로깅 출력의 Log4j로 리디렉션 할 수 있습니다 생각하지 않는다 :

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

서비스-config.xml에

4

사용 CommonsLoggingTarget을 나는 SLF4J로 출력을 얻기 위해 다음과 같은 사용.

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"logger를 정의하면 BlazeDS/LCDS에서 생성되는 많은 중복 로그 메시지가 발생하여 성능에 큰 영향을 줄 수 있습니다.

+0

또한 모든 BlazeDS 범주에 대한 유용한 문서가 있습니다. – Tom

관련 문제