Задать вопрос
@codecity

Google App Engine и printStackTrace -- как записать в лог

Существует ли стандартный способ отобразить информацию Exception.printStackTrace() в логе (в контрольной панели) Google App Engine?

Я почему-то был уверен, что он по умолчанию туда пишется и активно его использовал. А теперь нужно либо все переделывать, либо найти как включить.

С Java работаю недавно, просьба ногами не пинать.
  • Вопрос задан
  • 2852 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
barker
@barker
Ну, вообще, стандартный printStackTrace пишет в System.err => должно попадать в журналы приложений. Вы куда именно смотрите? А всё из System.out / System.err попадает туда?
Ответ написан
@Dimonich
Попробуйте просто переписать весь стек в стандартный логер.
        try {
            //Some code
        } catch (Exception e) {
            for (StackTraceElement ste : e.getStackTrace()) {
                log.error(e.toString());
            }
        }
Ответ написан
@codecity Автор вопроса
Кстати, что интересно, System.out.println(«test») в логах появляется. А вот System.out.print(«test») — нет. Если же добавить в конце строки символы "\r\n" — начинает появляться. То же самое и с System.err. Видимо недоработка Google…
Ответ написан
Комментировать
@codecity Автор вопроса
В общем, решение:

PrintStream printStream = new PrintStream(System.err, true, "UTF-8");
exception.printStackTrace(printStream);


С русскими символами проблем не замечено.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы