2016-06-22 9 views
6

मैं जर्सी 2.23 के साथ लॉग इन करने का प्रयास कर रहा हूं। इस संस्करण के बाद से, वर्ग LoggingFilter को बहिष्कृत किया गया है, क्योंकि कोई यहां उदाहरण के लिए पढ़ सकता है: https://jersey.java.net/documentation/latest/logging_chapter.html। तो मुझे इसके बजाय LoggingFeature का उपयोग करना होगा। registerResourceConfig की विधि थी क्योंकि यह इस दस्तावेज़ में समझाया गया है। लेकिन अंत में property विधि काम किया:जर्सी में लॉग स्तर नया लॉगिंग फ़ीचर

client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_SERVER, "WARN"); 

यह एक चेतावनी के रूप में हर संदेश प्रिंट करता है। दुर्भाग्यवश यह कहीं भी दस्तावेज नहीं है (कम से कम मुझे कुछ भी नहीं मिला) जो मूल्यों की अनुमति है। जाहिर है, इसे एक स्ट्रिंग होना है, क्योंकि मुझे एक लॉग संदेश मिलता है कि स्ट्रिंग में किसी और चीज की कोशिश करते समय मूल्य को स्ट्रिंग में बदलने का कोई तरीका नहीं है। अब मैं इस संदेश को स्तर ट्रे के साथ लॉग करना चाहता हूं और मुझे इसे प्राप्त करने के लिए एक उपयुक्त स्ट्रिंग नहीं मिल रहा है। उदाहरण के लिए "ट्रेसी" और "ठीक" काम नहीं किया, इन मामलों में कुछ भी लॉग नहीं है। मुझे यह उल्लेख करना होगा कि मैं Log4j2 का उपयोग Slf4jBridgeHandler के साथ करता हूं क्योंकि जर्सी JUL का उपयोग करता है।

उत्तर

8

आखिरकार मैंने "रहस्य" को उजागर करने से पहले कई घंटों तक संघर्ष किया।

यह कुछ हद तक प्रतिद्वंद्वी है लेकिन LOGGING_FEATURE_LOGGER_LEVEL_SERVER के साथ आप जिस स्तर पर सेट कर रहे हैं वह वास्तव में आपके लॉग को मुद्रित करने के लिए सर्वर का लॉगर सेट होना आवश्यक न्यूनतम स्तर है। मैंने नाम के आधार पर माना था कि यह वास्तविक लॉगर स्तर स्थापित कर रहा था - जिसका अर्थ है कि इसे FINER या FINEST पर सेट करना अधिक आउटपुट उत्पन्न करेगा। इसके बजाय यह एक विशिष्ट स्तर पूरा होने तक लॉगिंग को "बंद करना" है।

उदाहरण के तौर पर, यदि आप इसे WARNING पर सेट करते हैं तो आप लॉग को तब तक देखेंगे जब तक सर्वर/क्लाइंट कम से कम WARNING स्तर मुद्रित करने के लिए सेट हो। java.util.logging द्वारा परिभाषित के रूप में स्तर हैं:

गंभीर (उच्चतम मूल्य)
चेतावनी
जानकारी
कॉन्फ़िग
फाइन
महीन
चरमसीमा (न्यूनतम मूल्य)

तो इसे WARNING पर सेट करके (शाब्दिक WARN 2.23.1 में मेरे लिए काम नहीं करता है) आप देखेंगे जीएस क्योंकि, डिफ़ॉल्ट रूप से, लॉगिंग आमतौर पर INFO स्तर पर होती है।

एक वैकल्पिक समाधान logging.properties फ़ाइल में डिफ़ॉल्ट लॉगिंग स्तर को बदलने के लिए है जो आम तौर पर $JAVA_HOME/jre/lib/logging.properties में होता है। आप सकता है, उदाहरण के लिए, फ़ाइल में निम्न परिवर्तन और आप अब अपने कोड में किसी विशेष गुण सेट करने की आवश्यकता होगी:

java.util.logging.ConsoleHandler.level = FINEST 
org.glassfish.jersey.test.JerseyTest.level = FINEST 

इस के लिए स्पष्ट नुकसान यह है कि यह कुछ भी आप इस से चलाने के प्रभाव होगा है JDK/JRE। इस मानक स्थान को ओवरराइड करने के तरीके हैं और वैकल्पिक logging.properties फ़ाइल का उपयोग करें, लेकिन यह इस बात पर निर्भर करता है कि आप अपना कोड कैसे निष्पादित कर रहे हैं, इसलिए मैं आपको अपनी परिस्थितियों के आधार पर शोध करने दूंगा। - धन्यवाद Logging level under maven surefire

+0

वाह है कि कोई बिल्कुल सहज है:

एक उदाहरण इस सूत्र जो जब Maven का उपयोग कर कैसे यह करने के लिए बताते हैं होगा! – Mafro34

+0

वाह, यह मुझे के लिए tripped ..मैं कब तक स्वीकार नहीं करूंगा। डिफ़ॉल्ट जेडीके जानकारी सब कुछ छुपा रहा था। और जैसा कि आपने उल्लेख किया है, जर्सी _SERVER स्तर को वार या सेवर पर सेट करने के लिए पूरी तरह से अंतर्ज्ञानी है – ChrisO

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