2013-04-14 9 views
5

अब मैं अपने लॉगर्स को धीरे-धीरे कार्य 'jettyRuǹ का उपयोग करने में सक्षम नहीं हूं। एकाधिक बाइंडिंग के साथ पहला मुद्दा कोई समस्या नहीं थी। लेकिन अब (1.4 के लिए अपग्रेड करने के बाद, मुझे लगता है) मेरे लॉगर्स शुरू नहीं होते हैं। Slf4j दस्तावेज़ प्रोग्रामेटिक रूप से संदर्भ को रीसेट करने के लिए कहता है, लेकिन मैं इसे कॉन्फ़िगरेशन द्वारा करना पसंद करूंगा क्योंकि JettyRun का उपयोग केवल विकास के लिए किया जाता है।slf4j लॉगबैक विकल्प लॉगर

$ gradle jettyRun 
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:jettyRun 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/opt/gradle-1.4/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/bertrand/.gradle/caches/artifacts-23/filestore/ch.qos.logback/logback-classic/1.0.9/jar/258c3d8f956e7c8723f13fdea6b81e3d74201f68/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 
SLF4J: The following loggers will not work because they were created 
SLF4J: during the default configuration phase of the underlying logging system. 
SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger 
SLF4J: org.yajug.users.api.MembershipController 
SLF4J: org.yajug.users.json.Serializer 
SLF4J: org.yajug.users.api.MemberController 
SLF4J: org.yajug.users.service.MemberServiceImpl 
SLF4J: org.yajug.users.persistence.MongoConnector 
+0

मैं अपने आईडीई में बिलाव 7 एम्बेड में परीक्षण किया गया है और मैं एक ही समस्या है, ऐसा लगता है यह Gradle से संबंधित नहीं है JettyRun या एकाधिक बाइंडिंग – krampstudio

उत्तर

2

अंत में मैंने पाया कि क्या गलत था:

  • लॉगिंग संदर्भ lazily आरंभ नहीं हो जाता, एक लकड़हारा करने के लिए पहली कॉल पर।
  • मेरे वेब ऐप के संदर्भ में (एक पृष्ठ वाला वेब ऐप जो केवल एसिंक कॉल करता है), पहला पृष्ठ 2 एसिंक अनुरोध
  • प्रत्येक अनुरोध को लॉगर था और प्रारंभिक रूप से प्रारंभिक रूप से किया गया था, यही कारण है मेरे कुछ लॉगर्स कार्यान्वयन जहां एक एनओपी प्रत्यारोपण द्वारा प्रतिस्थापित किया गया।
  • एप्लिकेशन स्टार्टअप पर एक लकड़हारा कॉल जोड़कर, संदर्भ सही तरीके से प्रारंभ है
+0

आपने एप स्टार्टअप पर लॉगर कॉल कैसे जोड़ा? मैंने ServletContextListener का उपयोग करने का प्रयास किया और यह काम नहीं किया। आपने यह लॉगर कॉल कहाँ जोड़ा? –

+0

जैसा कि मैं गुइस का उपयोग कर रहा हूं, पहला कॉल एक GuiceServletContextListener द्वारा किया गया है। यदि यह मेरे स्रोत कोड को गितब पर उपलब्ध कराने में सहायता कर सकता है: https://github.com/krampstudio/YajMember – krampstudio

+0

यह सभी बीएस है। एसएलएफ 4 जे में यहां एक बग है जो यहां प्रलेखित है: http://bugzilla.slf4j.org/show_bug.cgi?id=176। यह आपके लॉगिंग इनट को एक स्थिर ब्लॉक में घुमाने के लिए काम कर सकता है, या बस उस स्थिर ब्लॉक में LoggerFactory.getLogger ("रूट") या कुछ चल रहा है। – ingyhere

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