我的config.groovy中有以下内容
// default for all environments
log4j = { root ->
appenders {
rollingFile name:'stacktrace', file:"${logDirectory}/app_stack.log".toString(), maxFileSize:'100KB'
}
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'
debug 'com.my.code'
root.level = org.apache.log4j.Level.INFO
}
我将调试语句打印到所有类的日志中,但放在com.my.code包中的Groovy文件除外。我不打印调试语句。仅将info语句打印到日志中。
这是src / groovy中的groovy类之一的示例
@Log4j
class SomeTest {
def someMethod() {
log.info("This will print")
log.debug("This will not print")
println log.isDebugEnabled() //prints false
print log.isInfoEnabled() //prints true
}
}
问题
如何打开
com.my.code
包下所有类的调试?我在grails 2.3.5上。当我将root.level
更改为org.apache.log4j.Level.DEBUG
时,会显示调试语句,但同时也会打开所有其他类的DEBUG
最佳答案
这是一个配置,它将在com.my.code
级别记录DEBUG
包中的所有代码,并在ERROR
级别记录所有其他包。
日志将发送到控制台,并发送一个名为appLog.txt
的文件。
log4j = {
appenders {
def logPattern = '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{2} - %m%n'
console name: 'consoleAppender', layout: pattern(conversionPattern: logPattern)
file name: "fileAppender", file: "appLog.txt"
}
root {
// define the root logger's level and appenders, these will be inherited by all other loggers
error 'consoleAppender', 'fileAppender'
}
def appNamespaces = [
'com.my.code',
'grails.app.conf.com.my.code',
'grails.app.filters.com.my.code',
'grails.app.taglib.com.my.code',
'grails.app.services.com.my.code',
'grails.app.controllers.com.my.code',
'grails.app.domain.com.my.code'
]
appNamespaces.each { debug it }
}
关于grails - 调试语句未显示src/groovy类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800002/