2017-09-12 20 views
8

में विशिष्ट लॉग फ़ाइल में लिख नहीं रहा है। मैं अपने फाइल सिस्टम में स्थानीय लॉग फ़ाइल में लिखने के लिए Log4j का उपयोग करने की कोशिश कर रहा हूं।लॉग 4 जे स्प्रिंग बूट माइक्रोस्कोस

वास्तव में एक अलग परियोजना से सटीक गुण फ़ाइल का उपयोग किया और मेरे ऐप के नाम से मेल खाने के लिए शीर्ष स्तर निर्देशिका का नाम बदल दिया। विभिन्न परियोजना logs.log फ़ाइल को लिखती है लेकिन यह किसी भी सामग्री को बिल्कुल प्रिंट नहीं करती है। दोनों परियोजनाएं log4j के समान संस्करण का उपयोग करती हैं।

pom.xml

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 

मेरी यूनिक्स आधारित MacOS पर, मैं/var/log में cd'ed/और निम्नलिखित किया: सभी

sudo mkdir myapp 
chmod 777 myapp 

MyApp अंदर है, तो निम्न सेटअप जगह:

if (log.isDebugEnabled() { 
    log.debug("print something"); 
} 

MyApp/src/मुख्य/संसाधन/log4j.properties:

log4j.rootCategory=DEBUG, RF 

log4j.category.your.category.name=DEBUG 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

log4j.appender.stdout.layout.ConversionPattern=%-5p [%F]: %m [%d{ISO8601}]%n 
log4j.logger.com.amazonaws=DEBUG RF 

log4j.appender.RF=org.apache.log4j.RollingFileAppender 
log4j.appender.RF.File=/var/log/myapp/logs.log 

log4j.appender.RF.MaxFileSize=10MB 
log4j.appender.RF.MaxBackupIndex=30 
log4j.appender.RF.layout=org.apache.log4j.PatternLayout 
log4j.appender.RF.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x(%F:%L) - %m%n 
Threshold=DEBUG 

क्यों अंदर समझ में नहीं आता है:

/var/log/myapp/ 

कोई logs.log फ़ाइल मौजूद है!

Am एक स्प्रिंग बूट 1.5.4.RELEASE अंदर इस का उपयोग करते हुए जो मैं का उपयोग कर बिल्ड:

mvn clean install 

और फिर चलाने का उपयोग कर सकते हैं:

java -jar myapp.jar 

या

mvn spring-boot:run 

चाहेंगे अगर कोई मुझे बेहतर गुण फ़ाइल प्रदान कर सकता है या देख सकता है कि मैं क्या गलत कर रहा हूं तो सराहना करें?

इसे पढ़ने के लिए समय निकालने के लिए धन्यवाद।

+2

लॉग 4j लॉगिंग की अनुमति देने के लिए आपको वसंत बूट लॉगिंग (डिफ़ॉल्ट लॉगबैक) को बाहर करना होगा। [कैसे बाहर निकालें] के लिए यहां देखें (https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-log4j-for-logging) – Veeram

उत्तर

3

@Veeram सही है - लॉग लॉगबैक द्वारा मुद्रित हैं, जो वसंत बूट के साथ आता है। आपको इसे लॉग 4j द्वारा प्रतिस्थापित करने की आवश्यकता है।

Spring Boot 1.4.0 Release Notes से::

log4j 1 समर्थन हटा दिया गया है अपाचे EOL घोषणा के बाद हालांकि, अब यह एक विकल्प नहीं है।

तो मैं सुझाव दे सकता हूं कि आप लॉग 4j 2 पर अपग्रेड पर विचार करें।

पीएस मुझे लगता है कि आप अभी भी log4j 1.2 उपयोग कर सकते हैं, लेकिन इस मामले में, आप को परिभाषित करने और निर्दिष्ट करें कि कौन निर्भरता वसंत-बूट स्टार्टर-लॉगिंग मॉड्यूल से बाहर रखा जाना चाहिए, और जो बजाय जोड़ा जाना चाहिए करने के लिए है। मैंने आपकी समस्या को पुन: पेश करने के लिए एक डेमो प्रोजेक्ट स्थापित किया है और बिल्ड में निर्भरताओं की सूची यहां दी गई है।Gradle (मैं Gradle उपयोग करें, लेकिन मैं तुम्हें एक बात समझ लगता है):

dependencies { 
    compile('org.springframework.boot:spring-boot-starter') { 
     exclude group: 'ch.qos.logback' 
     exclude group: 'org.slf4j', module: 'log4j-over-slf4j' 
    } 
    compile('commons-logging:commons-logging:1.2') 
    compile('log4j:log4j:1.2.17') 
    compile('org.slf4j:slf4j-log4j12:1.7.25') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 
1

@mxf कहते हैं logback अब वसंत बूट के भीतर डिफ़ॉल्ट लॉगिंग उप-प्रणाली है।

हालांकि आप अन्य लॉगर्स कॉन्फ़िगर कर सकते हैं, मैं लॉगबैक के साथ रहने की अनुशंसा करता हूं क्योंकि यह वास्तव में दर्द स्विचिंग लॉगर्स की दुनिया है।

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