2010-02-14 10 views
5

पर काम नहीं कर रहा है। मेरे पास log4j DSL सही ढंग से मेरे Config.groovy में एक grails applicaiton में कॉन्फ़िगर किया गया है। जैसा कि मैंने डीएसएल में निर्दिष्ट किया है, ग्रेल्स रन-एप के साथ एप्लिकेशन को पूर्ण लॉगिंग डंप करता है। हालांकि युद्ध की फाइल बनाने और इसे टोमकैट पर तैनात करने के लिए एक ग्रेल्स युद्ध करने के बाद, लॉगिंग बस गायब हो जाती है। मैं इसे कहीं भी काम नहीं देख सकता, टॉमकैट कंसोल को छोड़कर डीबग स्तर पर लाखों लॉग स्टेटमेंट दिखा रहा हूं और लॉग फाइलों में लॉग इन करने के लिए कुछ भी विशिष्ट नहीं है।टॉमकैट "Gra4J" पर Grails WAR सभी


log4j = { 
     appenders { 
       appender new org.apache.log4j.DailyRollingFileAppender(name: "tomcatLog", datePattern: "'.'yyyy-MM-dd", file: "${logDirectory}/snm.log".toString(), layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n')) 
     } 
     root { 
      info 'stdout', 'tomcatLog' 
      additivity = true 
     } 
     info 'grails.app', 
       'grails.app.controller', 
       'grails.app.bootstrap', 
       'grails.app.service', 
       'grails.app.task', 
       'commons', 
       'jsontwitter' 
    } 

आप ऊपर डीएसएल कृपया समझा सकते हैं? यह कॉमन्स भेजता है। * और jsontwitter। * कक्षाएं नामित लॉग फ़ाइल में लॉग ऑन करती हैं लेकिन कोई नियंत्रक नहीं, सेवा लॉग फ़ाइल में सहेजा जाता है।

धन्यवाद, आलम शेर

उत्तर

7

आप पता लगाने के लिए की जरूरत है, क्या लॉगिंग निर्देशिका बिल्ला उपयोग करता है। इस के grails एप्लिकेशन के अंतर्गत/conf/Config.groovy निम्नलिखित स्निपेट द्वारा किया जाता है:

def catalinaBase = System.properties.getProperty('catalina.base') 
if (!catalinaBase) catalinaBase = '.' // just in case 
def logDirectory = "${catalinaBase}/logs" 

// default for all environments 
log4j = { root -> 
    appenders { 
      rollingFile name:'stdout', file:"${logDirectory}/${appName}.log".toString(), maxFileSize:'100KB' 
      rollingFile name:'stacktrace', file:"${logDirectory}/${appName}_stack.log".toString(), maxFileSize:'100KB' 
    } 

    error 'org.codehaus.groovy.grails.web.servlet', // controllers 
      'org.codehaus.groovy.grails.web.pages', // GSP 
      'org.codehaus.groovy.grails.web.sitemesh', // layouts 
      'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
      'org.codehaus.groovy.grails.web.mapping', // URL mapping 
      'org.codehaus.groovy.grails.commons', // core/classloading 
      'org.codehaus.groovy.grails.plugins', // plugins 
      'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
      'org.springframework', 
      'org.hibernate' 
    root.level = org.apache.log4j.Level.WARN 
} 

// special settings with production env 
environments { 
    development { 
     log4j = { root -> 
      appenders { 
         console name: 'stdout', layout: pattern(conversionPattern: "%d [%t] %-5p %c %x - %m%n") 
      } 
      warn  'org.codehaus.groovy.grails.web.servlet', // controllers 
         'org.codehaus.groovy.grails.web.pages', // GSP 
         'org.codehaus.groovy.grails.web.sitemesh', // layouts 
         'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
         'org.codehaus.groovy.grails.web.mapping', // URL mapping 
         'org.codehaus.groovy.grails.commons', // core/classloading 
         'org.codehaus.groovy.grails.plugins', // plugins 
         'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
         'org.springframework', 
         'org.hibernate' 
      debug 'com.netjay' 
      root.level = org.apache.log4j.Level.INFO 
     } 
    } 
} 
+0

यह मेरे लिए प्रवेश करता है परिभाषित प्लग इन का उपयोग क्षुधा में मार दिया जाता है। लेकिन जैसा कि मैंने प्रश्न को अद्यतन किया है, क्या आप कृपया मेरे लॉगिंग के लिए निर्दिष्ट डीएसएल पर एक नज़र डालें और मुझे बताएं कि इसमें क्या गलत हो सकता है, क्योंकि सेवाओं, डोमेन, नियंत्रकों से कोई भी लॉग इन नहीं किया गया है, जो कि समाज के अलावा निर्दिष्ट परिशिष्ट हैं पैकेज उदाहरण उदा कॉमन्स और jsontwitter। इसके अलावा catalina.out सब कुछ संलग्न हो रहा है लेकिन विशाल DEBUG स्तर लॉगिंग के साथ-साथ :( तो यह मेरे लिए बहुत भ्रमित है। –

+0

मुझे लगता है कि आपके डीएसएल में पैकेज परिभाषा गलत है। आपको उपसर्ग को हटाने की आवश्यकता है "grails.app"। तो यदि आपका डोमेन क्लास पैकेज com.mycompany.abc.MyCoolDomainClass में स्थित है, तो आपको DSL में com.mycompany.abc का उपयोग करना होगा। यदि आपने अभी तक अपने डोमेन क्लासेस, नियंत्रक में संकुल का उपयोग नहीं किया है, इत्यादि हमेशा संकुल का उपयोग करने की सिफारिश की जाती है और रूट पैकेज में कुछ भी नहीं डालती है। –

-1

वहाँ भी jira पर एक बग है: http://jira.codehaus.org/browse/GRAILS-5666: रन-युद्ध कुछ classpath संघर्ष है।

मार्क पामर कहते हैं: लॉगिंग कि deps कि वारिस "वैश्विक"

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