grails3.3.0
您是否曾经在Groovy / Grails工具套件(GGTS)中运行一个正在运行的Grails应用程序来控制台输出,该输出与先前的输出完全相同,只是不显示该输出?
这通常可以在用于调试目的的println
语句中看到,例如在Controller中,您认为每次都应该向控制台输出一些行,但实际上并没有。
class TestController {
def index() {
println "index called"
}
}
在浏览器中重复调用http:// localhost:8080 / test / test / index时 ,您只会看到仅第一次出现 。
....index called
当相同的消息反复发送到控制台时,GGTS的某些便利功能会吞噬某些输出-如果它看起来相同。 自从Grails 2.0引入以来,它与ANSI代码有关,以便向控制台输出一些带有颜色的信息或重新出现在同一行上。
克里斯·沃尔德(Kris de Volder)在JIRA问题STS-3499中提供了一个很好的示例,说明了诸如
Resolving Dependencies.
Resolving Dependencies..
Resolving Dependencies...
Resolving Dependencies....
应该在ANSI支持的控制台上“重写自身”,所以您只会看到
Resolving Dependencies...<increasing periods>
在同一行上。
从这些代码中剥离了未启用GGTS的GGTS控制台中的输出-这将导致其他人不满意的附加输出。 因此,GGTS使用一种变通方法(默认情况下已启用),并去除与先前输出匹配的输出开头,仅打印其余部分。
所以,如果您想知道为什么
class BootStrap {
def init = { servletContext ->
['A', 'B', 'B'].each { println it }
}
}
只会打印
|Running Grails application
A
B
|Server running. Browse to http://localhost:8080/test
代替
|Running Grails application
A
B
B
|Server running. Browse to http://localhost:8080/test
你知道现在这不是一个bug :-)
您必须在Groovy> Grails> Grails Launch下的GGTS首选项中禁用选项“ Clean Grails 2.0 output ”,以防止这种吞咽行为。
现在,当您希望它出现时,您的输出出现在GGTS中:-)
翻译自: https://www.javacodegeeks.com/2015/03/ggts-clean-up-grails-2-0-output.html
grails3.3.0