2010-03-09 12 views
10
मेरे पास Grails 1.2 में my log4j DSL कॉन्फ़िगरेशन के लिए निम्न है: जब मैं टॉमकैट के लिए युद्ध के रूप में तैनात करता हूं, तो मेरे लॉग दोनों catalina.out और मेरे 'फ़ाइल' लॉगर को उत्पादन के लिए परिभाषित किए जाते हैं। मैंने कोशिश की है: के लिए परिभाषा में जोड़ना, जो काम नहीं करता है (और मैं वास्तव में इसकी उम्मीद नहीं करता, क्योंकि यह स्पष्ट रूप से रूट लॉगर के लिए additivity सेट कर रहा है ?)। बंद करने के भीतर और ब्लॉक के अंदर 'stdout' कंसोल एपेंडर को परिभाषित करता है, लेकिन यह या तो काम नहीं करता है। शायद यह मेरी टॉमकैट कॉन्फ़िगरेशन के साथ एक मुद्दा है और मेरा log4j DSL नहीं है? सबसे नज़दीक मैं किसी ऐसे मुद्दे को ढूंढने के लिए आया हूं जो है, जिसके लिए कोई (सरल) समाधान नहीं था। मैं लॉग में catalina.out के लिए लॉग से कैसे रोक सकता हूं?

उत्तर

3

मैं Config.groovy में निम्न कार्य करके समस्या के समाधान करने में सक्षम था:

import org.apache.log4j.Logger 

log4j = { 
    // ... configuration from question ... 
} 

environments { 
    production { 
     def logger = Logger.getRootLogger() 
     logger.removeAppender('stdout') 
    } 
} 

बहरहाल, यह एक गंदा हैक की तरह लगता है, और मैं वहाँ एक बेहतर आशा करती हूं कि, log4j डीएसएल विशेष Grails ऐसा करने का तरीका।

इसके अलावा, स्टडआउट को लिखने के लिए शायद कुछ भी हो सकता है, शायद लिखित नहीं होगा, जो किसी भी तरह से लॉग/अपवाद/स्टैकट्रैस सीधे किसी भी तरह से लिखा जा सकता है।

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