如何解决没有使用Root,Grails Log4J无法配置信息记录器
所以我认为在grails中配置log4j有一个非常简单的问题,但是在任何地方都找不到解决方案。我目前正在尝试将其设置为将所有错误移至stacktrace文件,然后将应用程序输出的所有信息+警告日志移至控制台。这是我目前对其进行配置的方式:
log4j = {
appenders {
rollingFile name: "stacktrace",maxFileSize: "10MB",maxBackupIndex:2,file:"/tmp/logs/stacktrace.log",threshold: org.apache.log4j.Level.ERROR
console name: "stdout",threshold: org.apache.log4j.Level.INFO
}
root {
error 'stacktrace','stdout'
}
info stdout: 'grails.app'
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.web.mapping.filter',// URL mapping
'org.codehaus.groovy.grails.web.mapping',// URL mapping
'org.codehaus.groovy.grails.commons',// core / classloading
'org.codehaus.groovy.grails.plugins',// plugins
'org.codehaus.groovy.grails.orm.hibernate',// hibernate integration
'org.springframework','org.hibernate','net.sf.ehcache.hibernate'
}
现在,我必须为其设置根目录才能将错误打印到文件中。但是,如果我尝试将Info / Warn级别添加到根配置中以转到stdout
,它将记录所有未明确定义的内容,因此,当我只希望从插件和内容中获取信息/警告日志时,它们就会通过grails应用程序。有没有一种方法可以将不同的日志级别指向不同的附加程序,而无需通过根目录进行设置?
解决方法
有没有一种方法可以将不同的日志级别指向不同的附加程序 无需通过根目录进行设置?
是的。 Log4j为此提供了很大的灵活性。例如,您可以通过将名称作为密钥传递给日志级别方法之一来将附加程序附加到特定的记录器:
error myAppender: "grails.app.controllers.BookController"
要将多个附加器添加到记录器,请将它们添加到同一级别的声明中:
error myAppender: "grails.app.controllers.BookController",myFileAppender: ["grails.app.controllers.BookController","grails.app.services.BookService"],rollingFile: "grails.app.controllers.BookController"
我们在https://grails.github.io/grails2-doc/2.5.6/guide/conf.html#logging中记录了许多相关功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。