私は、BlazeDSを使用してJava Webアプリケーションの上にFlexアプリケーションを作成しています。 BlazeDSは内部にログを記録していますが、私は自分のアプリケーションで使用しているのと同じログ記録フレームワークを使用するように設定したいと思います。Log4JでBlazeDSの実装を設定するにはどうしたらいいですか?
Log4Jを使用するようにBlazeDSを設定する方法はありますか?あるいは、BlazeDSにすでに焼き付けられているFlexのログ記録に悩まされていますか?
私は、BlazeDSを使用してJava Webアプリケーションの上にFlexアプリケーションを作成しています。 BlazeDSは内部にログを記録していますが、私は自分のアプリケーションで使用しているのと同じログ記録フレームワークを使用するように設定したいと思います。Log4JでBlazeDSの実装を設定するにはどうしたらいいですか?
Log4Jを使用するようにBlazeDSを設定する方法はありますか?あるいは、BlazeDSにすでに焼き付けられているFlexのログ記録に悩まされていますか?
のために出力し、設定例をリダイレクトするための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>
私は何がビルトインされていることそれはコモンズ・ログなどがしかし、このJIRAの問題があなたに有用であり得る、あなたはブレイズDSのログ出力がLog4Jのためにリダイレクトすることができます信じていません:
http://jira.springframework.org/browse/FLEX-18
はありません、ボックスBlazeDSのから直接のlog4jまたは他のフレームワークをサポートしていないサービス-config.xmlの
この回答は素晴らしいです。私のコメント: 1)私のSlf4jTargetでequals()をオーバーライドして、BlazeDSがそのターゲットを2回登録するのを防ぐために同じタイプの他のインスタンスに対してtrueを返さなければならなかった。 2)event.logger.getCategory "BlazeDS" slf4jをコンフィグレーションするときにより良い名前空間ハンドルを持つようにする 3)BlazeDSが入出力データをすべてダンプするので、DEBUGメッセージを1000文字に切り詰める – Tom
コンストラクタからsuper()を呼び出すと便利です – fglez