2010-10-19 23 views
8

का उपयोग कर .log फ़ाइल में लॉग इन करना मैं SLF4J का उपयोग कर रहा हूं और आवश्यकता के अनुसार मुझे लॉग को .log फ़ाइल में संग्रहीत करना होगा। लेकिन जब मैं प्रोग्राम चलाता हूं तो लॉग इनलॉग फ़ाइल में नहीं लिखा जाता है।SLF4j/log4j

कक्षा:

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 


public class TestSLF4J { 

// private static Logger _logger = LoggerFactory.getLogger(TestSLF4J.class); 
    private static Logger _logger = LoggerFactory.getLogger(TestSLF4J.class); 



    public static void main(String[] args) { 
     logger .debug("Sample debug message"); 
logger .info("Sample info message"); 
logger .warn("Sample warn message"); 
logger .error("Sample error message"); 
    } 
} 

log4j.properties

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.maxFileSize=100KB 
log4j.appender.file.maxBackupIndex=5 
log4j.appender.file.File=C:/checkLog.log 
log4j.appender.file.threshold=DEBUG 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.rootLogger=DEBUG,file 

मैं कंसोल पर जानकारी, चेतावनी दी है, त्रुटि नहीं बल्कि डिबग मूल्य देख सकते हैं .. !!

क्या कोई मुझे checkLog.log फ़ाइल में लॉग स्टोर करने में मदद कर सकता है .??

उत्तर

9

मैंने आपके द्वारा दिए गए उदाहरण की कोशिश की और यह मेरे लिए ठीक काम किया।

  • चेक, अगर आप सी की जड़ को लिख सकते हैं: वहाँ कई चीजें हैं जो मैं जाँच होगी/कोशिश कर रहे हैं - यह बजाय लिखें:

    log4j.appender.file.File=checkLog.log 
    

    वर्तमान फ़ोल्डर में लॉग इन करने के

  • एक कंसोल लकड़हारा जोड़े चाहे वह कंसोल में कारगर सिद्ध होगा:

    log4j.appender.console=org.apache.log4j.ConsoleAppender 
    log4j.appender.console.layout=org.apache.log4j.PatternLayout 
    log4j.appender.console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
    
    log4j.appender.file=org.apache.log4j.RollingFileAppender 
    log4j.appender.file.maxFileSize=100KB 
    log4j.appender.file.maxBackupIndex=5 
    log4j.appender.file.File=checkLog.log 
    log4j.appender.file.threshold=DEBUG 
    log4j.appender.file.layout=org.apache.log4j.PatternLayout 
    log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
    
    log4j.rootLogger=DEBUG,console,file 
    

    आप आवेदन चलाते हैं चालू, आपको कंसोल में और फ़ाइल में लॉगिंग देखना चाहिए।

  • चेक कि सभी sl4j पुस्तकालयों रास्ते में कर रहे हैं - आप अपने classpath

  • पर slf4j-api और slf4j-log4j12 जार की आवश्यकता होगी सुनिश्चित करें कि log4j.properties classpath

आशा इस मदद करता है पर है।

1

सुनिश्चित करें कि आपके पास केवल एक लॉगिंग फ्रेमवर्क के साथ बाध्यकारी है। यदि आपके पास एक से अधिक लॉगिंग फ्रेमवर्क जार हैं तो आप आउटपुट देख सकते हैं।

मुझे इसी तरह की समस्या थी, तब पाया गया कि कक्षा पथ slf4j-simple-1.7.5.jar के साथ-साथ log4j.jar था। तो लॉग आउटपुट केवल कंसोल पर लिखा जा रहा था। कक्षा पथ से पहले को हटाने में मदद मिली।

Also check console, you should be getting a warning/error message.