在Config.groovy
我log4j
配置:
log4j = {
appenders {
file name:'connection', file: '/tmp/connection.log'
}
info "grails.app.controllers.myController"
root {
info 'connection'
}
我如何配置只获取myController日志?
答案 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
}