2012-06-29 31 views
5

मैंने अभी लॉग ऑन जे का उपयोग करके अपनी गतिविधि को लॉग इन करने के लिए काम पर एक मौजूदा वेब एप्लिकेशन उठाया है। मैंने अपने वर्कस्पेस को ठीक उसी तरह कॉन्फ़िगर किया है जैसा कि मुझे बताया गया था और बाकी सब कुछ (डीबी कनेक्शन, प्रमाणीकरण, आदि ...) ठीक काम करता है सिवाय इसके कि लॉग फ़ाइल में कुछ भी नहीं लिखा जा रहा है। अन्य समान अनुप्रयोगों में लॉगिंग करने में कोई समस्या नहीं है।Log4J कुछ भी लॉग नहीं करता

जब एप्लिकेशन शुरू होता है तो मैंने वेबस्पेयर कंसोल को देखा है और वहां कोई त्रुटि नहीं है जो इंगित कर सकती है कि Log4J लॉगिंग क्यों नहीं कर रहा है।

मैंने इसका उल्लेख किसी अन्य देव (जिसने एक बार इस एप्लिकेशन पर काम किया था, लेकिन थोड़ी देर के लिए नहीं किया था और इससे पहले की तारीख से अधिक है) जिन्होंने टिप्पणी की कि यह बहुत अजीब व्यवहार था, लेकिन उसे नहीं पता था कि यह क्यों लॉग इन करने में विफल हो सकता है और किसी भी त्रुटि की रिपोर्ट नहीं कर सकता है।

मैं कॉन्फ़िगरेशन फ़ाइल और गुण फ़ाइल पर गया हूं और सबकुछ ठीक दिखता है। मुझे संदेह है कि Log4J कभी भी log4j.xml नहीं पढ़ रहा है, लेकिन मुझे इसके बारे में निश्चित नहीं है। यह थोड़ी देर के बाद से मैंने लॉग 4 जे के साथ काम किया है - क्या किसी के पास इस प्रकार की समस्या को परेशानी-शूटिंग पर कुछ अच्छी युक्तियां हैं?

पीएस: इस एप्लिकेशन के कई उदाहरण हैं जो विभिन्न परीक्षण/क्यूए/प्रोड सर्वर पर तैनात किए गए हैं और ये सभी लॉग ठीक हैं। यह स्थानीय वर्कस्टेशन पर केवल है जो लॉगिंग चुपचाप विफल होने लगता है।


अद्यतन: तो यह तरीका आवेदन तैनात किया जा रहा है के साथ एक समस्या होने लगते है। मैंने क्लासलोडर मोड को "पैरेंट लास्ट" में बदल दिया और मैं देख सकता हूं कि लॉग 4 जे फ़ाइल कम से कम पढ़ी जा रही है। और पहली क्रिया जो मैं कोशिश करता हूं उसे ClassNotFoundException ट्रिगर करता है जिसमें कहा गया है कि org.apache.commons.logging.impl.Log4jFactory नहीं मिला।


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

एक प्रमुख अंतर यह है कि कि यूआई परियोजना कुछ अन्य घर में व्यवस्थाएं भी शामिल है (जार के रूप में पूर्व संकलित) कि हो सकता है पहले से ही आवश्यक लॉगिंग विन्यास शामिल हैं और हो सकता है कि जहां अंतर नहीं है है।

मैंने जवाब का उपयोग करने की कोशिश की (एक फ़ाइल जिसे org.apache.commons.logging.LogFactory नाम दिया गया है जिसमें मेटा-आईएनएफ/सेवाओं में एक पंक्ति है: "org.apache.commons.logging.impl.Log4jFactory") इस प्रश्न से: Websphere all logs are going to SystemOut.log लेकिन यह मदद नहीं प्रतीत होता था।

+0

यह किस प्रकार का लॉगर उदाहरण है? रोलिंगफाइलएपेंडर – Woot4Moo

+0

@ Woot4Moo में: यह एक फ़ाइल ऐपेंडर है। – FrustratedWithFormsDesigner

+0

क्या आप अपनी कॉन्फ़िगरेशन फ़ाइल पोस्ट कर सकते हैं? क्या सभी वातावरण में कॉन्फ़िगर समान है? – evanwong

उत्तर

2

सबसे हालिया चीज जो मैंने बदल दी है, अंत में लॉगिंग ठीक से काम कर रहा है, क्लासलोडर मोड को "PARENT_FIRST" और WAR क्लासलोडर नीति को "एप्लिकेशन" में बदल रहा था। प्रारंभिक डिफ़ॉल्ट विन्यास "PARENT_FIRST"/"मॉड्यूल" था। मैंने इसे सह-कार्यकर्ता की सलाह पर "PARENT_LAST"/"एप्लिकेशन" में बदल दिया, जो कहता है कि लॉगिंग उनके लिए ठीक काम करती है और यह एकमात्र बदलाव है जब वे इस एप्लिकेशन के लिए एक नया सैंडबॉक्स बनाते हैं। मुझे यकीन नहीं है कि मुझे "PARENT_FIRST"/"एप्लिकेशन" के साथ क्यों जाना पड़ा, लेकिन कम से कम यह अब काम करता है।


अद्यतन:

मैं एक नया कार्यक्षेत्र की स्थापना की कोशिश की और मैं एक ही समस्या थी। यह पता चला है कि आपको "PARENT_FIRST"/"एप्लिकेशन" और org.apache.commons.logging नामक एक फ़ाइल की आवश्यकता है। मेटा-आईएनएफ/सेवाओं में एक फ़ाइल के साथ लॉगफैक्टरी: "org.apache.commons.logging.impl.Log4jFactory" । फ़ाइल को लॉग इन करने में विफल होने का कारण नहीं है (आमतौर पर एक संदेश के साथ कि लॉग 4 जे नहीं मिल सकता है)।

0

मुझे पता है यह आपके ठीक उसी लक्षण नहीं है जैसी समस्याओं के लिए बहुत उपयोगी है, लेकिन वहां log4j के साथ मुद्दों में जाना जाता है अपने आवेदन करता है, तो (या जो कुछ भी इसका उपयोग करता है) कॉमन्स लॉगिंग का उपयोग करता है। देखें कि this question/answer प्रासंगिक है या नहीं।

0

लॉग फ़ाइल बनाने में सक्षम नहीं है, मैंने वसंत webservice अनुप्रयोग में logback.xml फ़ाइल का उपयोग किया है और websphere सर्वर में तैनात किया है ... लेकिन जब मैंने log4j.properties फ़ाइल का उपयोग किया है तो यह लॉग फ़ाइल बना रहा है। मैं उचित निर्भरता log4j और slf4j के लिए उचित .. logback.xml फ़ाइल

<file>C:/abc/myLogFile.log</file> 
<append>true</append> 
<encoder> 
    <pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern> 
</encoder></appender> 
दे दिया है

`

निर्भरता:

<dependency> 
    <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${slf4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>${logback.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-core</artifactId> 
     <version>${logback.version}</version> 
    </dependency> 
0

मैं एक समस्या जहां log4j दिखाई नहीं दे रहा था मेरी परियोजनाओं में से एक में कुछ भी। बाहर निकला मैंने log4j2.xml फ़ाइल में classname में एक अग्रणी स्थान जोड़ा था। Log4j क्लासनाम द्वारा एक शब्दकोश लुकअप करता है। तो वर्गनाम में कोई भी अग्रणी या पिछली जगह उस विशेष प्रविष्टि को अमान्य प्रस्तुत करेगी।

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