BlazeDS を使用して、Java Web アプリケーションの上に Flex アプリケーションを作成しています。BlazeDS は内部にログを記録していますが、アプリケーションで使用しているのと同じログ フレームワークを使用するように設定したいと考えています。
Log4J を使用するように BlazeDS をセットアップする方法はありますか? それとも、すでに BlazeDS に組み込まれている Flex のログ記録にこだわっているのでしょうか?
BlazeDS を使用して、Java Web アプリケーションの上に Flex アプリケーションを作成しています。BlazeDS は内部にログを記録していますが、アプリケーションで使用しているのと同じログ フレームワークを使用するように設定したいと考えています。
Log4J を使用するように BlazeDS をセットアップする方法はありますか? それとも、すでに 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 でのログ レベルの設定には注意してください。これを「すべて」に設定し、log4j.xml で「blazeds」ロガーを定義すると、BlazeDS/LCDS によって冗長なログ メッセージが大量に生成され、パフォーマンスに重大な影響を与える可能性があります。
Blaze DS のログ出力を log4j や commons-logging などにリダイレクトできる組み込み機能があるとは思えません。しかし、この JIRA の問題は役に立つかもしれません。
http://jira.springframework.org/browse/FLEX-18
出力をリダイレクトする Java クラスと、services-config.xml のサンプル構成が含まれています。