1

在我Config.groovylog4j配置中:

log4j = {

    appenders {
        file name:'connection', file: '/tmp/connection.log'
    }

    info "grails.app.controllers.myController"

    root {
        info 'connection'
    }

如何配置仅获取 myController 日志?

4

3 回答 3

2

如何配置仅获取 myController 日志?

您当前正在将根记录器设置为“信息”级别,因此

info "grails.app.controllers.myController"

实际上并没有做任何事情(因为这个记录器无论如何都会从根继承一个级别的信息)。如果要禁用除此之外的所有日志记录,myController则需要将根记录器设置为“关闭”而不是 info

root {
    off 'connection'
}

相反,如果您想将myController输出放入/tmp/connection.logstdout 并将其他日志消息保留在标准输出中,那么您需要

root {
  info 'stdout'
}

info connection:'grails.app.controllers.myController', additivity:false

(或者完全忽略该root块以获得默认行为,这相当于说root { error "stdout" })。additivity:false告诉 myController 记录器仅记录到直接附加到它的附加程序(您的“连接”附加程序)。如果没有这个,消息也会转到从父级继承的附加程序,即默认的“stdout”附加程序。

于 2013-01-24T13:35:51.570 回答
1

您应该定义附加程序特定的记录器,例如

info connection: "grails.app.controllers.myController"

接下来,您应该从根块中删除您的“连接”附加程序,以避免根记录器继承。

有关详细信息,请参阅 grails 文档中的日志记录部分:http: //grails.org/doc/latest/guide/conf.html#logging

于 2013-01-24T13:02:21.743 回答
1

尝试这样的事情:

log4j = {

    def loggerPattern = '%d %-5p >> %m%n'

    def errorClasses = [] // add more classes if needed
    def infoClasses = ['grails.app.controllers.myController'] // add more classes if needed
    def debugClasses = [] // add more classes if needed

    appenders {
        console name:'stdout', layout:pattern(conversionPattern: loggerPattern)
        rollingFile name: "file", maxFileSize: 1024, file: "./tmp/logs/logger.log", layout:pattern(conversionPattern: loggerPattern)
    }

    error   stdout: errorClasses, file: errorClasses
    info    stdout: infoClasses, file: infoClasses
    debug   stdout: debugClasses, file: debugClasses
}
于 2013-01-24T13:35:30.243 回答