在我Config.groovy
的log4j
配置中:
log4j = {
appenders {
file name:'connection', file: '/tmp/connection.log'
}
info "grails.app.controllers.myController"
root {
info 'connection'
}
如何配置仅获取 myController 日志?
如何配置仅获取 myController 日志?
您当前正在将根记录器设置为“信息”级别,因此
info "grails.app.controllers.myController"
实际上并没有做任何事情(因为这个记录器无论如何都会从根继承一个级别的信息)。如果要禁用除此之外的所有日志记录,myController
则需要将根记录器设置为“关闭”而不是 info
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 记录器仅记录到直接附加到它的附加程序(您的“连接”附加程序)。如果没有这个,消息也会转到从父级继承的附加程序,即默认的“stdout”附加程序。
您应该定义附加程序特定的记录器,例如
info connection: "grails.app.controllers.myController"
接下来,您应该从根块中删除您的“连接”附加程序,以避免根记录器继承。
有关详细信息,请参阅 grails 文档中的日志记录部分:http: //grails.org/doc/latest/guide/conf.html#logging
尝试这样的事情:
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
}