grails只有我的日志

时间:2013-01-24 09:31:48

标签: grails log4j

Config.groovylog4j配置:

log4j = {

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

    info "grails.app.controllers.myController"

    root {
        info 'connection'
    }

我如何配置只获取myController日志?

3 个答案:

答案 0 :(得分:2)

  

我如何配置只获取myController日志?

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

info "grails.app.controllers.myController"

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

root {
    off 'connection'
}

如果您希望将myController输出放入/tmp/connection.log并将其他日志消息保留在stdout上,则需要

root {
  info 'stdout'
}

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

(或者完全忽略root块以获取默认行为,这相当于说root { error "stdout" })。 additivity:false告诉myController记录器只记录直接连接到它的appender(你的“连接”appender)。如果没有这个,消息将转到从父级继承的appender,即默认的“stdout”appender。

答案 1 :(得分:1)

你应该定义特定于appender的记录器,例如

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

接下来你应该从根块中删除你的“连接”appender以避免root logger继承。

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

答案 2 :(得分: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
}