我想在grails应用程序中使用发送日志消息来按小时滚动文件。以下是我在Config.groovy
appenders {
rollingFile name:"stacktrace",
file: "/tmp/logs/app.log",
conversionPattern: '%-5p %d{MM-dd HH:mm:ss} %m (%F:%L)'
appender new DailyRollingFileAppender(
name: "events",
datePattern: "'.'yyyy-MM-dd-HH:mm",
file: "/tmp/logs/app_events.log",
layout: pattern(conversionPattern: "%c{2} %m%n")
)
}
root {
error 'stacktrace'
}
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.commons', // core / classloading
'org.codehaus.groovy.grails.plugins', // plugins
'org.springframework'
info events: "com.app.events", additivity: false
这就是我在com.app.events
包中获取事件的记录器:
LOG = Logger.getLogger('events')
LOG.info("logging info")
我不确定我在这里缺少什么。我没有看到任何日志打印。如果我在root中添加info 'events'
,它可以工作,但所有包中的日志也都在app_events.log
内,这不是我想要的。我只希望来自com.app.events
包的日志进入app_events.log。
答案 0 :(得分:0)
Config.groovy中日志记录说明行的部分是:
// "Logging Level" "Appender Name": "Logger Name", "Other Options"
info events: "com.app.events", additivity: false
在您检索记录器的位置:
// LOG = Logger.getLogger("Logger Name")
LOG = Logger.getLogger('events')
为了让events
appender接收包com.app.events
日志记录,请更改您将记录器检索到的方式:
LOG = Logger.getLogger('com.app.events')
在根块中使用error 'stacktrace'
可能会影响log4j。 stacktrace appender是一个特殊的appender,只适用于完整的堆栈跟踪。尝试添加另一个appender作为根appender,并在根块中使用它代替'stacktrace'
。
appenders {
appender new DailyRollingFileAppender(
name: "base",
datePattern: "'.'yyyy-MM-dd-HH:mm",
file: "/tmp/logs/app_events.log",
layout: pattern(conversionPattern: "%c{2} %m%n")
)
}
root {
error "base"
}