मैं सेटअप ग्रहण करने के लिए मेरे सबसे अच्छे किया है और मेरे जावा आवेदन के भीतर काम करने के लिए एक log4j.properties फ़ाइल का उपयोग करने के लिए। हालांकि, यह गुण फ़ाइल का उपयोग नहीं कर रहा प्रतीत होता है और मुझे यकीन नहीं है कि क्यों।जावा आवेदन: log4j हो रही ग्रहण पर्यावरण
पुस्तकालय: slf4j-api-1.6.1, slf4j-jdk14-1.6.1
आवेदन लॉगिंग ठीक काम करता है के भीतर। मैं ग्रहण कंसोल में जानकारी, चेतावनियां और त्रुटियों को प्रिंट करने में सक्षम हूं।
मैं ऐसा करने में सक्षम होने के लिए क्या चाहते हैं दोनों सांत्वना और एक लॉग फ़ाइल के लिए सभी प्रवेश करने गए संदेशों डिबग और प्रिंट करने के लिए लॉग स्तर बदल रहा है।
मैं एक log4j.properties फ़ाइल है कि इस तरह दिखता है बनाया है:
log4j.rootLogger=DEBUG,console,file
log4j.rootCategory=DEBUG, R, O
# Stdout
log4j.appender.O=org.apache.log4j.ConsoleAppender
# File
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
# Control the maximum log file size
log4j.appender.R.MaxFileSize=100KB
# Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=5
log4j.appender.file.File=checkLog.log
log4j.appender.file.threshold=DEBUG
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.O.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
log4j.appender.O.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x - %C.%M(%F:%L) - %m%n
मेरे निर्देशिका संरचना इस तरह दिखता है:
My Project
--src/
----MYProject/
------*.java
--bin/
----MYProject/
------*.class
--log4j/
----log4j.properties
ग्रहण मैं गया में: भागो विन्यास -> क्लासपाथ (टैब) -> "उपयोगकर्ता प्रविष्टियों" पर राइट क्लिक किया गया -> एक नया फ़ोल्डर के रूप में "log4j" जोड़ा गया "और सहेजा गया।
फिर मेरे कोड में मैं इस तरह लॉगजर कहता हूं mple कोड मेरा दृष्टिकोण प्रदर्शित करने के लिए तो यह वाक्य रचना त्रुटियाँ हो सकता है):
package MYProject;
import org.slf4j.LoggerFactory;
public class MyClass{
final org.slf4j.Logger test_logger = LoggerFactory.getLogger(MyClass.class);
public MyClass(){}
public someMethod(){
test_logger.debug("Some Debug");
test_logger.info("Some Info");
test_logger.warn("Some Warning");
test_logger.error("An Error");
}
}
मैं तो someMethod फोन करके यह जानकारी प्रिंट, ग्रहण कंसोल के लिए चेतावनी, त्रुटि। यह DEBUG प्रिंट नहीं करेगा और फ़ाइल पर प्रिंट नहीं करेगा।
मैं मैं गलत क्या कर किया जा सकता है पर किसी भी सुझाव की सराहना करेंगे।
मैंने आपकी टिप्पणी और अपील दोनों के साथ खेला है और यही वह है जो मैंने पाया है। मैं अपने वर्तमान सेटअप के साथ PropertyConfigurator नहीं जोड़ सकता क्योंकि यह log4j लाइब्रेरी की एक संपत्ति है और slf4j-jdk14 (slf4j के log4j बाइंडर जैसा कि मैं इसे समझता हूं) लाइब्रेरी का हिस्सा नहीं है। वीएम पैरामीटर को सत्य में सेट करना कोई अतिरिक्त डिबगिंग नहीं देता है। – Bryce
यदि मैं slf4j-jdk14 के अलावा वास्तविक log4j लाइब्रेरी का संदर्भ देता हूं तो मुझे डीबग आउटपुट प्राप्त करना प्रारंभ होता है। बस संदर्भ जोड़ना मेरी log4j.properties फ़ाइल काम करना शुरू कर देता है। मुझे लगता है कि मुझे 9 0% की जरूरत है। इससे डिबगिंग बढ़ जाती है लेकिन प्रारंभिक पोस्ट में दी गई कक्षा में मुद्रित आदेश अब प्रिंट नहीं होते हैं (test_logger.debug, test_logger.info, आदि)। मुझे लगता है कि ऐसा इसलिए है क्योंकि मैंने जो log4j लाइब्रेरी जोड़ा है वह ओवरग्राइटिंग org.slf4j.Logger है जिसे मैं पहले इस्तेमाल कर रहा था। मैं इन दो पुस्तकालयों को एक साथ बेहतर काम करने के लिए कैसे प्राप्त करने के बारे में थोड़ा उलझन में हूं, कोई सुझाव? – Bryce
slf4j लॉगिंग के लिए सिर्फ एक मुखौटा है, आपको अभी भी अपने क्लासपाथ में वास्तविक लॉगिंग लाइब्रेरी (log4j अपने मामले में) जोड़ना होगा। यह लिंक देखें: http://slf4j.org/manual.html#binding –