2011-05-13 16 views
6

कंसोल के लिए INFO को कॉन्फ़िगर करने के लिए मैं विभिन्न स्थानों पर आउटपुट के सीधे विभिन्न स्तरों को लॉग कॉल करने का प्रयास कर रहा हूं। मैं चाहता हूं कि सभी लॉग हमेशा फ़ाइल पर जाएं, और केवल INFO और ऊपर कंसोल पर जाएं। क्या यह संभव नहीं है? मेरे पास निम्नलिखित है और यह काम नहीं करता है। दोनों हमेशा एक ही हैं:मैं रजिस्ट्री स्तर को लॉग इन करने के लिए लॉगबैक.groovy फ़ाइल का उपयोग कैसे करूं और

def bySecond = timestamp("yyyyMMdd'.'HHmmss", context.birthTime) 

appender("STDOUT", ConsoleAppender) { 
    encoder(PatternLayoutEncoder) { 
    pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" 
    } 
} 

appender("FILE", FileAppender) { 
    file = "./logs/log-${bySecond}.log" 
    encoder(PatternLayoutEncoder) { 
    pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" 
    } 
} 

logger("com.crystal", WARN, ["STDOUT"]) 
logger("com.crystal", TRACE, ["FILE"]) 

root(TRACE) 

scan() 

क्या एक ही लॉग संदेश को अलग-अलग स्तरों के आधार पर दो अलग-अलग स्थानों पर निर्देशित करना संभव है?

+0

करने के लिए एक फिल्टर जोड़ने के रूप में अपने प्रश्न को टैग करने के लिए ट्रेस "logback" उपयोगी होगा। – Ceki

उत्तर

6

भेजने दोनों appenders

logger 'com.crystal', TRACE, ['STDOUT', 'FILE'] 

लेकिन ConsoleAppender

appender("FILE", FileAppender) { 
    filter(ch.qos.logback.classic.filter.ThresholdFilter) { 
    level = INFO 
    } 
    ... 
} 
+0

बहुत बहुत धन्यवाद !!! मैंने सफलता के बिना हमेशा के लिए कोशिश की जब तक आप साथ आए !! –

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