我最近开始使用Grails进行项目。 我在Intellij Idea环境中工作。
我正在编写单元测试以测试我创建的服务。
我无法记录测试用例中的信息。无论我使用的日志级别如何,控制台中都不会显示任何消息。
这是我在Config.groovy中的log4j配置:
log4j = {
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L %x - %m%n')
}
root {
info 'a1'
additivity = true
}
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.springframework',
'org.hibernate',
'org.apache',
'net.sf.ehcache.hibernate'
debug 'grails.app.controllers'
'hibernate.SQL'
'grails.app'
}
我还必须提到这样一个事实:当我运行测试用例时,我在开始时会得到以下信息,但从我所看到的只是一个警告,它不应该影响测试用例。
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/abujdei/grails/grails-2.3.7/dist/grails-plugin-log4j-2.3.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/abujdei/grails/grails-2.3.7/lib/org.slf4j/slf4j-simple/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http:/www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.GrailsSlf4jLoggerFactory]
log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http:/logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我现在几个小时都在苦苦挣扎。
答案 0 :(得分:2)
在Intellij的Grails视图中,右键单击可测试节点(包,类或方法)时,在运行下,您应该有两个选项:
请注意,如果您的grails版本默认使用分叉测试执行,则必须(source):
grails.project.fork.test = false
<Intellij_install_dir>/plugins/Grails/grails-rt.jar
复制到您项目的lib。答案 1 :(得分:0)
您应该在root-block中引用控制台appender:
// ...
root {
info 'stdout'
additivity = true
}
// ...
我已经在snipplr的不同环境中记录了一个示例,而不是使用控制台appender,但它可能仍然有用。