2016-06-10 5 views
7

मेरे आवेदन में, मैं लॉग इन होने वाले सभी संदेशों की तुलना में अपने स्वयं के कोड से कुछ संदेशों को एक विशिष्ट तरीके से लॉग इन करना चाहता हूं। हालांकि मुझे यकीन नहीं है कि मैं उनसे कैसे बच सकता हूं जिन्हें लॉगैक रूट लॉगर में स्वचालित रूप से लॉग भी किया जा रहा है।लॉगबैक के साथ डबल लॉगिंग से कैसे बचें?

नीचे इस कॉन्फ़िगरेशन का उपयोग करके, मैं निम्न (स्कैला) जैसे कोड का उपयोग करना चाहता हूं ताकि मैं केवल उस लॉगजर को कुछ संदेश लॉग कर सकूं।

val logger: Logger = LoggerFactory.getLogger("data-logger") 

हालांकि नीचे दिए गए कॉन्फ़िगरेशन में, ये संदेश दो बार लॉग हो जाते हैं, यानी वे रूट लॉगर द्वारा भी लॉग इन होते हैं। मैं इससे कैसे बच सकता हूं? क्या मुझे लॉगबैक के साथ ऐसा कुछ पूरा करने के लिए काफी कृत्रिम रूप से एक अलग लॉगिंग स्तर का उपयोग करना चाहिए?

<configuration> 

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>logs/activity.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>activity.%i.log.zip</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>10</maxIndex> 
    </rollingPolicy> 
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>10MB</maxFileSize> 
    </triggeringPolicy> 
    <encoder> 
     <pattern>%msg%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%msg%n</pattern> 
    </encoder> 
    </appender> 

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> 
    <!-- use discarding threshold of zero to avoid ignoring INFO level messages see docs --> 
    <discardingThreshold>0</discardingThreshold> 
     <appender-ref ref="FILE" /> 
    </appender> 

    <root level="info"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="ASYNC" /> 
    </root> 

    <logger name="data-logger" level="info"> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="ASYNC" /> 
    </logger> 

</configuration> 
+0

संदर्भित प्रश्न को एक शीर्षक को दर्शाती है कि यह क्या हो सकता है आप कह सकते हैं कि वे नकली हैं के साथ संबंधित है करने के लिए संपादित किया गया था। दूसरे की गुणवत्ता की जांच किए बिना सिर्फ डुप्लिकेट के रूप में फ़्लैग करना, मैला है और संभवतः प्रतिबंधित होना चाहिए। – matanster

उत्तर

10

लॉगर्स श्रेणीबद्ध हैं, और लॉगर को भेजे गए किसी भी संदेश को डिफ़ॉल्ट रूप से अपने सभी पूर्वजों को भेजा जाएगा। आप additivity=false सेट करके इस व्यवहार को अक्षम कर सकते हैं। उदा .:

<logger name="data-logger" level="info" additivity="false"> 
संबंधित मुद्दे