我正在开发Grails应用程序。在我的Config.groovy中,我试图配置log4j,以便我的应用程序的代码以DEBUG级别记录,而所有groovy / grails / spring / hibernate代码(几乎所有其他内容)都以ERROR级别记录。
我现在只想登录到控制台(stdout)。
在浏览了许多博客文章和答案之后,我似乎仍然无法使其正常工作。这是我当前的设置:
log4j = {
appenders {
appender new ConsoleAppender(name: "appStdOut",
threshold: Level.toLevel("DEBUG"),
layout: new PatternLayout("..."))
appender new ConsoleAppender(name: "stdout",
threshold: Level.toLevel("ERROR"),
layout: new PatternLayout("..."))
}
root {
error 'stdout'
debug 'appStdOut'
}
error stdout: [
'org.codehaus.groovy.grails.web.servlet',
'org.codehaus.groovy.grails.web.pages',
'org.codehaus.groovy.grails.web.sitemesh',
'org.codehaus.groovy.grails.web.mapping.filter',
'org.codehaus.groovy.grails.web.mapping',
'org.codehaus.groovy.grails.commons',
'org.codehaus.groovy.grails.plugins',
'org.codehaus.groovy.grails.orm.hibernate',
'org.springframework',
'org.hibernate',
'net.sf.ehcache.hibernate'
]
debug appStdOut: [ 'mondrack' ] // This is the package name for my app
}
{ error 'stdout', 'appStdOut' }
时,不打印DEBUG日志,仅打印ERROR日志。 { debug 'stdout', 'appStdOut' }
时,我看到了所有框架和库的调试日志。 这真让我发疯!我该如何告诉它在DEBUG及以上版本中为我的软件包打印,在ERROR及以上版本中为其他所有内容打印到stdout?
最佳答案
这应该做
log4j = {
appenders {
def logPattern = '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{2} - %m%n'
// define a console appender named 'stdout' that uses the above patter
console name: 'stdout', layout: pattern(conversionPattern: logPattern)
}
root {
// the root logger - from which all other loggers inherit - uses the 'stdout' appender
// and logs at the error level
error 'stdout'
}
// packages that begin with 'mondrack' and Grails artefacts log at the debug level
debug 'mondrack', 'grails.app'
}
关于grails - 如何为我的代码设置调试级别,但对其他所有操作设置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218572/