2014-09-22 10 views
10

मेरे पास log4j-api-2.0.0.jar और log4j-core-2.0.2.jar मेरे निर्माण पथ में आयात है। असफल लेकिन किसी भी तरह निम्नलिखित कोड थे:विधि getLogger() अब log4j2 में लॉगर का सदस्य नहीं है?

import org.apache.logging.log4j.core.Logger; 

public class TheClass { 

    private static Logger log = Logger.getLogger(TheClass.class); 

... 

और त्रुटि संदेश से पता चलता है कि:

The method getLogger(Class<TheClass>) is undefined for the type Logger

मैं कर रहा हूँ बस इतनी उत्सुक getLogger() नहीं रह गया है लॉगर में एक वैध तरीका है?

उत्तर

17

आप देखेंगे कि Logger अब ऐसी विधि घोषित नहीं करता है।

log4j संस्करण 2 ने कुछ कठोर परिवर्तन किए हैं। Here's परिवर्तन लॉग। getLogger seems to have been moved to a LogManager class.

Here's वे माइग्रेशन करने का सुझाव देते हैं।

+2

और http://logging.apache.org/log4j/2.x/manual/migration.html पढ़ने के लिए बहुत उपयोगी हो सकता है। – nos

+0

@ नहीं धन्यवाद, जोड़ा गया। –

+1

और आपको पुराने संस्करण के लिए गाइड की विशेषता वाले वर्ष से अधिक पुराने ट्यूटोरियल नहीं मिलते हैं। सुंदर। – Traubenfuchs

1

अन्य उत्तर में बताया गया है, Logger अब एक अंतरफलक है और आप LogManager से लॉगर उदाहरणों मिल सकती है।

एपीआई अब कार्यान्वयन से अलग है, ताकि टीम को उपयोगकर्ता कोड तोड़ने के बिना कार्यान्वयन को बदलने की आजादी मिल सके। एपीआई शायद ही कभी बदल जाएगी, और यदि यह बदलता है तो यह 2.x संस्करण में होगा, 2.0.x संस्करण नहीं। उस ने कहा, मिलान लॉगऑज-एपीआई और log4j-core संस्करणों का मिलान करना शायद एक अच्छा विचार है।

6

मैं बेहतर समझने के लिए एक उदाहरण दे रहा हूं।

private static Logger logger; 
     static { 
      try { 
        // you need to do something like below instaed of Logger.getLogger(....); 
        logger = LogManager.getLogger(ResourceService.class); 
       } catch (Throwable th) { 
        throw new HRException("Cannot load the log property file", th); 
      } 
     } 
3
नई Log4J 2 के साथ

, आप जोड़ने के लिए कम से कम (मेरे मामले में) पर log4j कोर-2.8.2, log4j-api-2.8.2 और कुछ अन्य मामले में आप भी log4j जोड़ना पड़ सकता है -वेब-2.8.2। तो जब आप एक प्रवेश प्राप्त करना चाहते हैं आप import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;

आयात और अंत में उपयोग किया जाएगा static final Logger LOGGER = LogManager.getLogger(WebService.class.getName());

नोट: बुद्धिमान मत भूलना परियोजना के रूट निर्देशिका में कॉन्फ़िग फ़ाइल डाल करने के लिए, अन्य आप आपके लॉग प्राप्त करने में सक्षम नहीं होंगे।

आशा इस में मदद मिलेगी किसी तरह का संबंध

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