không, ra khỏi BlazeDS hộp không hỗ trợ log4j hoặc các khuôn khổ khác trực tiếp.
Tuy nhiên, việc thêm hỗ trợ cho khung đăng nhập yêu thích của bạn thật sự đơn giản; Tôi đã sử dụng sau đây để nhận được đầu ra vào 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);
}
}
.. và sử dụng nó, kích hoạt nó trong services-config.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<logging>
<target class="example.Slf4jTarget" level="Info">
</logging>
</services-config>
Câu trả lời này thật tuyệt vời. Ý kiến của tôi: 1) Tôi đã phải ghi đè bằng() trong mục tiêu Slf4jTarget của tôi để trả về true cho bất kỳ thể hiện nào khác cùng loại để ngăn BlazeDS đăng ký mục tiêu đó hai lần 2) Tôi bắt đầu chuỗi event.logger.getCategory() với "BlazeDS." để xử lý không gian tên tốt hơn khi định cấu hình slf4j 3) Tôi cắt bớt các thông báo DEBUG thành 1000 ký tự vì BlazeDS đổ tất cả dữ liệu trong và ngoài – Tom
Nó cũng thuận tiện để gọi super() từ hàm tạo – fglez