2010-10-22 14 views
5

Quiero tener salida de registro de mis paquetes o clases en un appender específico. Pero todo está impreso en el registrador de raíz.enviar salida de registro a diferentes archivos en grillas 1.3.2

Aquí es mi config:

log4j = { 
    appenders { 
     console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') 
     file name:'grailslog', file:'grails.log', threshold:org.apache.log4j.Level.DEBUG 
     file name:'mylog', file:'mylog.log', threshold:org.apache.log4j.Level.DEBUG 
    } 

    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', 
      'net.sf.ehcache.hibernate' 

    warn 'org.mortbay.log' 

    debug 'grails.app' 

    debug mylog: 'my.package', additivity: true 

    root { 
     error 'grailslog' 
     additivity = true 
    } 
} 

También probé esta sintaxis:

log4j = { 
    appender.stdout = "org.apache.log4j.ConsoleAppender" 
    appender.'stdout.layout'="org.apache.log4j.PatternLayout" 
    appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n' 

    appender.mylog= "org.apache.log4j.DailyRollingFileAppender" 
    appender.'mylog.File' = "mylog.log" 
    appender.'mylog.layout' = "org.apache.log4j.PatternLayout" 
    appender.'mylog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n' 

    appender.grailslog = "org.apache.log4j.DailyRollingFileAppender" 
    appender.'grailslog.File' = "grails.log" 
    appender.'grailslog.layout' = "org.apache.log4j.PatternLayout" 
    appender.'grailslog.layout.ConversionPattern' = '%d{[ dd.MM.yy HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n' 

    rootLogger="error,stdout,grailslog" 

    logger { 
     grails="info,stdout,grailslog" 
     my.package="debug,mylog" 
    } 
} 

Pero esto no funciona más con la versión actual griales.


Una breve actualización:

Grails tiene una nueva documentación para el registro-DSL (lenguaje de dominio específico). Por lo tanto, el código anterior tiene una sintaxis incorrecta.

escribieron:

... el nombre del registrador es ...

Respuesta

2

logré utilizar mi otro archivo de registro.

En lugar de utilizar un registrador con el nombre del paquete utilicé un nombre personalizado e inicialicé mi registrador con esto.

debug mylog: 'myLog', additivity: true 

[...] 

def log = Logger.getLogger("myLog") 
0

He añadido por entorno 'grails.app (tipo) (className)..' el registro por lo que mis registros de producción van a un fichero/dev correo electrónico & ir a la salida estándar

environments { 
    development { 
    debug 'grails.app', 'stdout' 
    //trace 'org.hibernate.type' 

    } 
    production { 
    appenders { 
     file name: "file", file: "/var/log/myapp.log" 
     appender new SMTPAppender(name: 'smtp', to: mail.error.to, from: mail.error.from, 
      subject: mail.error.subject, threshold: Level.ERROR, 
      SMTPHost: mail.error.server, SMTPUsername: mail.error.username, 
      SMTPDebug: mail.error.debug.toString(), SMTPPassword: mail.error.password, 
      layout: pattern(conversionPattern: 
      '%d{[ dd.MM.yyyy HH:mm:ss.SSS]} [%t] %n%-5p %n%c %n%C %n %x %n %m%n')) 
    } 

    root { 
     error 'stdout', 'smtp','file' 
     additivity = true 
    } 
    } 
} 
+1

Ok, eso se ve bien. Pero mi intención es registrar diferentes miembros del paquete o niveles de registro en diferentes registros. En mi Ejemplo anterior, quiero que todo de "mi.paquete" esté en un registro separado. – steyze

Cuestiones relacionadas