【问题标题】:How to have Log4J print line numbers from Groovy sources如何让 Log4J 从 Groovy 源打印行号
【发布时间】:2015-07-07 05:27:42
【问题描述】:

我正在使用 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"
    }
}

【问题讨论】:

  • 您能解释一下“未使用类文件中包含的调试信息进行编译”的意思吗? GMavenPlus 的调试配置是为了控制编译过程的详细程度,它对类文件没有影响。是您的调试日志语句没有被记录的问题吗?
  • @keegan,日志语句不打印行号。请在下面找到我的 log4j 属性文件 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
  • 这是 Log4J 不知道如何从 Groovy 获取行号的问题。提到了一种解决方法herehere,但我不确定是否有任何最新的示例。我会继续寻找/思考。还值得一提的是,Log4J 建议不要打印行号,因为计算它们的成本很高。

标签: groovy log4j


【解决方案1】:

一种解决方案是添加@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 元对象协议。

【讨论】:

    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多