2009-04-09 8 views
8

私は、BlazeDSを使用してJava Webアプリケーションの上にFlexアプリケーションを作成しています。 BlazeDSは内部にログを記録していますが、私は自分のアプリケーションで使用しているのと同じログ記録フレームワークを使用するように設定したいと思います。Log4JでBlazeDSの実装を設定するにはどうしたらいいですか?

Log4Jを使用するようにBlazeDSを設定する方法はありますか?あるいは、BlazeDSにすでに焼き付けられているFlexのログ記録に悩まされていますか?

答えて

13

のために出力し、設定例をリダイレクトするためのJavaクラスが含まれています。

ただし、お気に入りのログフレームワークのサポートを追加するのは簡単です。 ..

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がそのターゲットを2回登録するのを防ぐために同じタイプの他のインスタンスに対してtrueを返さなければならなかった。 2)event.logger.getCategory "BlazeDS" slf4jをコンフィグレーションするときにより良い名前空間ハンドルを持つようにする 3)BlazeDSが入出力データをすべてダンプするので、DEBUGメッセージを1000文字に切り詰める – Tom

+0

コンストラクタからsuper()を呼び出すと便利です – fglez

1

私は何がビルトインされていることそれはコモンズ・ログなどがしかし、このJIRAの問題があなたに有用であり得る、あなたはブレイズDSのログ出力がLog4Jのためにリダイレクトすることができます信じていません:

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

はありません、ボックスBlazeDSのから直接のlog4jまたは他のフレームワークをサポートしていないサービス-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でログレベルを設定するだけで十分です。 Log4j.xmlに「すべて」を設定し、log4j.xmlに「blazeds」ロガーを定義すると、BlazeDS/LCDSによって生成される冗長なログメッセージが多く発生し、パフォーマンスに大きな影響を与える可能性があります。

+0

すべてのBlazeDSカテゴリ – Tom

関連する問題