无法打印 groovy 中正在执行的确切行 - GroovyShell?

Unable to print the exact line being executed in groovy - GroovyShell?

主 groovy 文件 (MainApp.groovy) 具有以下调用 sample.groovy

的代码
script = new GroovyShell(binding).parse(new File("sample.groovy))
script.run()

Log4j.xml 有一个带有转换模式 %d{ABSOLUTE} %-5p [%c{1}] %m%n.

的 CONSOLE appender

即使更改为不同的模式,groovy 文件 sample.groovy 的行号也不会在执行 sample.groovy.

中的方法期间打印出来

有人可以帮我打印在 sample.groovy 中执行的行吗?

而不是

12:40:57,255 DEBUG [sample] Request:

不是它被打印为

12:40:57,255 DEBUG [MainApp] Request:

因此很难调试或知道正在执行哪一行。

谢谢。

如果我理解了您的要求并且没有看到您的其余代码,那么 Log4j 似乎能够很好地对其进行分类。

在MainApp.groovy

Logger logger = Logger.getLogger(MainApp)
logger.debug("Request ${request}")

在sample.groovy中:

Logger logger = Logger.getLogger(SampleApp)
logger.debug("Request ${request}")

您应该会看到类似于以下内容的输出:

2015-04-03 15:38:53,649 DEBUG  com.sample.MainApp - Request: REQUEST
2015-04-03 15:38:53,971 DEBUG  com.sample.SampleApp - Request: REQUEST