0

我可以让日志记录在我的服务中工作的唯一方法是将其添加到我的服务中:

class MyService {
def log = LogFactory.getLog(getClass())
...

我在 Config.groovy 中的 log4j 设置:

log4j = {

    PatternLayout patternLayout = new PatternLayout("%d [%t] %-5p %c %x - %m%n")


    debug   'grails.app.controllers',
            'grails.app.controller',
            'grails.app.domain',
            'grails.app.service',
            'grails.app.filters',
            'com.mycompany'
//            'org.springframework.security'
            'org.hibernate.SQL'

    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'

    appenders {
        appender new org.apache.log4j.ConsoleAppender(name: "console",
                threshold: org.apache.log4j.Level.DEBUG,
                layout: patternLayout
        )
    }
    root {
        error 'stdout'
        additivity = true
    }
}

我原以为日志记录可以在服务中工作,而不必在顶部添加 def log... 。

4

1 回答 1

3

grails.app.service应该是grails.app.services。这在 2.0 版中有所改变。

您可以通过添加轻松找到工件中的记录器名称

println log.name

到一个测试方法并调用它。

于 2013-11-02T20:37:26.810 回答