2009-04-09 8 views
8

मैं BlazeDS का उपयोग कर जावा वेब एप्लिकेशन के शीर्ष पर एक फ्लेक्स ऐप लिख रहा हूं। BlazeDS इसके अंदर लॉग इन कर रहा है, लेकिन मैं इसे अपने आवेदन में एक ही लॉगिंग फ्रेमवर्क का उपयोग करने के लिए सेट अप करना चाहता हूं।मैं Log4J के साथ अपने BlazeDS कार्यान्वयन कैसे सेट कर सकता हूं?

क्या लॉग 4 जे का उपयोग करने के लिए BlazeDS को सेट करने का कोई तरीका है? या क्या मैं फ्लेक्स लॉगिंग सामान से फंस गया हूं जो पहले से ही ब्लेज़डीएस में बेक्ड है?

उत्तर

13

नहीं के लिए उत्पादन और नमूना विन्यास रीडायरेक्ट करने के लिए एक जावा वर्ग भी शामिल है, बॉक्स BlazeDS से बाहर 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) मुझे अपने एसएलएफ 4jTarget में बराबर() को उसी प्रकार के किसी भी अन्य उदाहरण के लिए सही करने के लिए बराबर करना था ताकि BlazeDS को उस लक्ष्य को दो बार पंजीकृत करने से रोकने के लिए 2) मैंने event.logger.getCategory() स्ट्रिंग को prefixed किया था "BlazeDS।" slf4j को कॉन्फ़िगर करते समय बेहतर नामस्थान संभालने के लिए 3) मैं 1000 अक्षरों में DEBUG संदेशों को छोटा कर देता हूं क्योंकि BlazeDS सभी इन-आउटगोइंग डेटा – Tom

+0

कन्स्ट्रक्टर – fglez

1

मैं नहीं मानता में निर्मित है कि वहाँ है कुछ भी है कि, आम-प्रवेश, आदि हालांकि इस JIRA मुद्दा आप के लिए काम का हो सकता है पर रीडायरेक्ट करने 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 देखें।

बस सेवा-config.xml में लॉग स्तर सेट करने से सावधान रहें। यदि आप इसे "ऑल" पर सेट करते हैं, और log4j.xml में "blazeds" लॉगर को परिभाषित करते हैं, तो BlazeDS/LCDS द्वारा उत्पन्न बहुत से अनावश्यक लॉग संदेश होंगे, जिनके महत्वपूर्ण प्रदर्शन प्रभाव हो सकते हैं।

+0

से सुपर() को कॉल करना भी सुविधाजनक है, सभी BlazeDS श्रेणियों पर उपयोगी दस्तावेज़ भी है – Tom

संबंधित मुद्दे

 संबंधित मुद्दे