2010-10-22 8 views
5

Paketlerim veya sınıflarım belirli bir ekleyicideki günlük çıktısına sahip olmak istiyorum. Ancak her şey kök kaydediciye yazdırılır.log çıkışını farklı dosyalara gramajlar halinde gönder 1.3.2

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

Ben de bu sözdizimi çalıştı:

İşte benim yapılandırma olduğunu

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

Ama bu akım grails sürümüyle artık çalışmaz.


Kısa güncelleme:

Grails log-DSL için yeni Belgeleri (alan özel dil) sahiptir. Bu nedenle yukarıdaki kodun yanlış bir sözdizimi vardır.

Onlar yazdı:

... kaydedici adıdır ...

cevap

2

stdout'a gidin.

Paket adıyla bir günlükçüyü kullanmak yerine özel bir ad kullanmış ve bununla birlikte kaydedicimi başlatmıştım.

debug mylog: 'myLog', additivity: true 

[...] 

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

Ben çevre başına ekledik 'grails.app (tip) (className)..' benim üretim günlükleri dosya/e-posta & dev gidin böylece oturum benim diğer günlük dosyasını kullanmak için yönetilen

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

Tamam, bu iyi görünüyor. Ama amacım farklı paket üyelerini veya günlük seviyelerini farklı kayıtlara kaydetmektir. Yukarıdaki örnekte, "my.package" öğesinin herşeyi tek bir günlükte olmasını istiyorum. – steyze