2010-02-14 7 views
5

Ben log4j DSL doğru bir yapılandırma uygulamasında benim Config.groovy içinde yapılandırılmış log4j var. Uygulamayı grails run-app disketleriyle çalıştırdığım DSL'de belirttiğim mükemmel kayıt. Ancak, bir savaş dosyası oluşturmak ve onu tomcat'e dağıtmak için bir grev savaşı yaptıktan sonra, günlüğe kaydetme sadece ortadan kaybolur. Herhangi bir yerde çalışmayı göremiyorum, milyonlarca günlük deyimini hata ayıklama düzeyinde gösteren tomcat konsolu ve günlük dosyalarına giriş yapma özel bir şey yok. Tomcat Grails WAR on Tomcat "Log4J" hiç çalışmıyor


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' 
    } 

Yukarıdaki DSL lütfen açıklayabilir? Commons gönderir. * Ve jsontwitter. * Sınıfları belirlenen günlük dosyasına kaydeder, ancak hiçbir kontrolör, servis kaydı dosyaya kaydedilir.

sayesinde Alam Sher

cevap

7

Sen bulmak gerekir ne günlüğü dizin erkek kedi kullanır. Bu grails-app/conf/Config.groovy aşağıdaki pasajı yapılır:

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

"global" devralan Deps tanımlayan eklentileri kullanarak uygulamalarda öldürüldü. Ancak, soruyu güncellediğim için, oturum açmam için belirttiğim DSL'ye bir göz atabilir ve bununla ilgili neyin yanlış olabileceğini söyleyebilir misiniz, çünkü hizmetlerden, etki alanlarından, denetleyicilerin günlükleri, sosyal haklar dışındaki eklere atanmayacaktır. paketler örneğin commons ve jsontwitter. Ayrıca catalina.out içinde her şey ekleniyor ama büyük DEBUG seviyesi de günlüğe kaydediliyor :( Yani bu benim için çok kafa karıştırıcı bir şey .. –

+0

Bence DSL'deki paket tanımları yanlıştır. "grails.app". Eğer etki alanı sınıfınız com.mycompany.abc.MyCoolDomainClass paketinde bulunuyorsa, DSL'de com.mycompany.abc'yi kullanmalısınız. Eğer henüz alan sınıflarınızda, controllerer'larda paket kullanmıyorsanız, vb. her zaman paketleri kullanmanız ve hiçbir zaman kök paketine herhangi bir şey koymanız tavsiye edilir. –