2010-02-14 17 views
5

Tengo log4j DSL configurado correctamente en mi Config.groovy en una aplicación de grial. Al ejecutar la aplicación con grails, la ejecución de la aplicación descarga el registro perfecto tal como lo especifiqué en la DSL. Sin embargo, después de hacer una guerra de griales para generar un archivo war y desplegarlo en tomcat, el registro simplemente desaparece. No puedo verlo funcionando en ninguna parte, excepto en la consola de tomcat que muestra millones de instrucciones de registro en el nivel de depuración y nada específico de mi registro en los archivos de registro.Grails WAR en Tomcat "Log4J" no funciona en absoluto


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

¿Puede usted explicar la DSL arriba? Envía registros de clases de commons. * Y jsontwitter. * Al archivo de registro designado, pero no se guarda en el archivo el controlador, el registro de servicios.

Gracias, Alam Sher

Respuesta

7

Se necesitan averiguar, lo registro utiliza Tomcat directorio. Esto se hace mediante el siguiente fragmento de griales-app/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

Esto hace el registro para mí. Pero como he actualizado la pregunta, ¿pueden echar un vistazo a la DSL que especifiqué para mi registro y decirme qué podría estar mal con esto, ya que no hay registros de servicios, dominios, controladores que vayan a los appenders designados a excepción de la realidad? paquetes, por ejemplo bienes comunes y jsontwitter. También en catalina.out todo se está anexando pero con un gran nivel de DEPURACIÓN también :( Esto es algo muy confuso para mí. –

+0

Creo que las definiciones de paquete en su DSL son incorrectas. Necesita eliminar el prefijo "grails.app". Así que si su clase de dominio está ubicada en el paquete com.mycompany.abc.MyCoolDomainClass, debe usar com.mycompany.abc en el DSL. Si aún no usa paquetes en sus clases de dominio, controllerlerer, etc. se recomienda usar siempre paquetes y nunca poner nada en el paquete raíz. –

-1

También hay un error en jira: http://jira.codehaus.org/browse/GRAILS-5666: Run-guerra tiene algunos conflictos de ruta de clases.

Marc Palmer dice: tala muere en aplicaciones que utilizan plugins que definen deps que heredan "global"

Cuestiones relacionadas