Статьи

GGTS: очистить выход Grails 2.0

Ггц-логотип Были ли у вас в Groovy / Grails Tool Suite (GGTS) ​​выходные данные консоли, запущенные приложением Grails, которые в точности совпадают с предыдущими, просто не отображаются?

Это часто можно увидеть с помощью операторов println для целей отладки, например, в контроллере, который, по вашему мнению, должен выводить некоторую строку в консоль каждый раз, но просто этого не делает.

1
2
3
4
5
class TestController {
    def index() {
        println "index called"
    }
}

Когда http: // localhost: 8080 / test / test / index неоднократно вызывается в браузере, вы просто продолжаете видеть только первый случай .

1
....index called

Когда одно и то же сообщение повторно отправляется на консоль, некоторая удобная функция GGTS поглощает некоторый вывод — если он выглядит одинаково. Это связано с — с момента появления Grails 2.0 — кодами ANSI, чтобы сделать вывод на консоль цветным или вновь появиться в той же строке.

Крис де Волдер дает хороший пример в выпуске JIRA STS-3499 о том, как много строк, таких как

1
2
3
4
Resolving Dependencies.
Resolving Dependencies..
Resolving Dependencies...
Resolving Dependencies....

должны перезаписывать себя на консолях, поддерживаемых ANSI, так что вы увидите только

1
Resolving Dependencies...<increasing periods>

на той же линии.

Вывод на консоль GGTS без поддержки ANSI исключается из этих кодов, что приводит к дополнительному выводу, который некоторым людям кажется неприятным. Таким образом, GGTS использует обходной путь — который включен по умолчанию — и удаляет начало вывода, которое соответствует предыдущему выводу, и выводит только остаток.

Так что, если вам интересно, почему

1
2
3
4
5
class BootStrap {
    def init = { servletContext ->
        ['A', 'B', 'B'].each { println it }
    }
}

будет только печатать

1
2
3
4
|Running Grails application
A
B
|Server running. Browse to http://localhost:8080/test

вместо

1
2
3
4
5
|Running Grails application
A
B
B
|Server running. Browse to http://localhost:8080/test

теперь вы знаете, что это не ошибка 🙂

Вы должны отключить опцию « Очистить выход Grails 2.0 » в настройках GGTS в Groovy> Grails> Grails Launch, чтобы предотвратить это поведение при глотании.

Ггц-Disable-беловые-Grails-выход

Теперь ваш вывод появляется в GGTS, когда вы хотите, чтобы он появился 🙂