का उपयोग नहीं कर रहा है हालांकि मुझे लगता है कि नीचे दिए उपयोगकर्ताओं को इनाम से सम्मानित किया है मदद करने का प्रयास किया है, मूल प्रश्न अनुत्तरित बना हुआ है। कोई वास्तविक व्यावहारिक समाधान यह सुनिश्चित करने के लिए मौजूद है कि logback.groovy कॉन्फ़िगर किया गया लॉगिंग जूनिट परीक्षणों के भीतर सम्मानित किया जाता है। परीक्षण logback config लोड और यह सही स्तर अभी भी किसी भी पर वास्तविक परीक्षा प्रवेश (विशेष रूप से slf4j के माध्यम से) है और अभी तक रिपोर्ट या स्तर पता लगा हैलॉगर slf4j logback कॉन्फ़िगर किया गया स्तर
मैं जानता हूँ कि अन्य लोगों को इस एक ही समस्या का सामना करना पड़ा है और यह है बहुत परेशान है जब बड़ी परियोजनाओं के परीक्षणों में कंसोल लॉगिंग बहुत अधिक वर्बोज़ होने के कारण बहुत अधिक समय लेता है। मैं इस सवाल पर पर फेंकने वाली बंटियां नहीं रख सकता। मुझे उम्मीद है कि कोई अच्छा समाधान के साथ आता है कि एक सिस्टम प्रॉपर्टी के माध्यम से अलग-अलग स्तर पर परीक्षण लॉगिंग को ठीक से कॉन्फ़िगर करने की अनुमति देता है। फिर, विभिन्न कॉन्फ़िगरेशन प्रोजेक्ट के लिए बनाए गए हो सकते हैं ताकि परीक्षण अलग-अलग लॉगिंग थ्रेसहोल्ड स्तर पर कॉन्फ़िगर किए जा सकें।
मेरे लॉगिंग एक logback.groovy फ़ाइल
के माध्यम से logback से कॉन्फ़िगर किया गया है अब, जब मेरे Maven पोम परियोजना है कि अन्य सभी परियोजनाओं को एकत्रित करती शुरू होता है, यह उन सब को सिस्टम सही लॉगिंग स्तर सेट करने के लिए संपत्ति से गुजरता है।
हालांकि, जब जूनिट परीक्षण चलते हैं, किसी कारण से, लॉगर सही स्तर नहीं लेता है, भले ही परीक्षण कक्षाएं स्थिर @beforeClass सुनिश्चित करें कि लॉगबैक ठीक से कॉन्फ़िगर किया गया है।
यह समस्याएं हैं जो परीक्षण में लॉगर्स नहीं हैं - अच्छी तरह से - हाँ उन्हें भी - वास्तविक समस्या यह है कि कोड अनुभागों में लॉगर्स जो चलते हैं (मेरे सभी प्रोग्राम हर जगह लॉगर्स) सेट होते हैं गलत लॉगिंग स्तर पर। जब वे प्रोग्राम परीक्षण कॉन्फ़िगर किए जाते हैं तो वे लॉगिंग नहीं कर रहे हैं।
हालांकि, जब लॉगबैक logback.goovy फ़ाइल के साथ प्रारंभ होता है तो परियोजना सही रिपोर्ट कर रही है। हालांकि, वास्तविक लॉगिंग स्तर TRACE पर सेट है या सभी
नीचे दिए गए आउटपुट से, यह स्पष्ट है कि लॉगबैक INFO को कॉन्फ़िगर किया गया है। लेकिन TRACE (अंतिम पंक्ति) में पहला प्रोजेक्ट लॉगिंग स्टेटमेंट दिखाता है कि उठाया नहीं जा रहा है।
सहायता।
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running groovy.text.StreamingTemplateEngineTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.245 sec
Running net.abcd.templating.InlinerTest
01:22:15,265 |-INFO in [email protected] - Added status listener of type [ch.qos.logback.core.status.OnConsoleStatusListener]
01:22:15,290 |-INFO in [email protected] - Setting ReconfigureOnChangeFilter scanning period to 5 minutes
01:22:15,290 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[C:\Users\ABDC\Dropbox\workspace\abcd\AbcdTemplating\conf\logback.groovy]] every 300 seconds.
01:22:15,290 |-INFO in [email protected] - Adding ReconfigureOnChangeFilter as a turbo filter
01:22:15,312 |-INFO in ch.qos.logback.classic.gaffer.ConfigurationDeleg[email protected] - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
01:22:15,316 |-INFO in [email protected] - Naming appender as [STDOUT]
***********************************************************
LOGGING MODE PROPERTY 'net.abcd.logging.level' SET TO: [info]
IT CAN BE SET TO: OFF, ERROR, WARN, INFO, DEBUG, TRACE, ALL, INFO
***********************************************************
getLogLevel() returned 'INFO'
01:22:15,496 |-INFO in [email protected] - Setting level of logger [ROOT] to INFO
01:22:15,532 |-INFO in [email protected] - Attaching appender named [STDOUT] to Logger[ROOT]
01:22:15.846 [main] TRACE net.abcd.templating.Inliner - Document:
मेरे logback.groovy फ़ाइल है:
displayStatusOnConsole()
scan('5 minutes') // Scan for changes every 5 minutes.
setupAppenders()
setupLoggers()
def displayStatusOnConsole() {
statusListener OnConsoleStatusListener
}
def setupAppenders() {
appender('STDOUT', ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %-16logger{50} - %msg%n"
}
}
}
def setupLoggers() {
def loglevel = getLogLevel()
println("getLogLevel() returned '${loglevel}'")
root(loglevel, ['STDOUT'])
}
def getLogLevel() {
def mode = System.getProperty('net.abcd.logging.level', '')
println("***********************************************************")
println("")
println("LOGGING MODE PROPERTY 'net.abcd.logging.level' SET TO: [${mode}]")
println("IT CAN BE SET TO: OFF, ERROR, WARN, INFO, DEBUG, TRACE, ALL, INFO")
println("")
println("***********************************************************")
switch(mode.toLowerCase()){
case 'off':
return OFF
case 'error':
return ERROR
case 'warn':
return WARN
case 'info':
return INFO
case 'debug':
return DEBUG
case 'trace':
return TRACE
case 'all':
return ALL
default:
return INFO
}
}
मुझे नहीं पता कि यह मदद करता है, लेकिन जुनीट अपने स्वयं के वर्ग लोडर को स्थापित करता है, जो लॉगिंग फ्रेमवर्क में हस्तक्षेप करने के लिए जाना जाता है। – llogiq
@llogiq मुझे पता है। .... फिर जूनिट रिपोर्ट द्वारा कॉन्फ़िगर क्यों किया गया है, भले ही व्यक्तिगत परीक्षण न हों। और इसे कैसे ठीक किया जाए? –