我正在使用Geb和Spock编写功能测试,并使用GMavenPlus使用Maven构建。如何配置Log4J以从我的Groovy源文件中打印行号?这是我目前的log4j.properties
log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%-p] %d{dd-MM-yyyy HH:mm:ss} %c:%L - %m%n
目前,这会产生类似
的消息[INFO] 2015-07-28 14:13:51,589 Log4jExample:? - Some useful message
这可以在这个小例子中再现
@Grab(group='log4j', module='log4j', version='1.2.17')
import org.apache.log4j.*
@groovy.util.logging.Log4j
class Log4jExample {
static void main(def args) {
log.level = Level.INFO
log.removeAllAppenders()
log.addAppender(new ConsoleAppender(new PatternLayout("[%-p] %d %c:%L - %m%n")))
log.info "Some useful message"
}
}
答案 0 :(得分:0)
一种解决方案是添加@CompileStatic注释 你的例子看起来像是
@Grab(group='log4j', module='log4j', version='1.2.17')
import org.apache.log4j.*
@groovy.util.logging.Log4j
@CompileStatic
class Log4jExample {
static void main(def args) {
log.level = Level.INFO
log.removeAllAppenders()
log.addAppender(new ConsoleAppender(new PatternLayout("[%-p] %d %c:%L - %m%n")))
log.info "Some useful message"
}
}
请注意,通过使用@CompileStatic,将绕过Groovy元对象协议。