Я пытаюсь отправить трассировку стека в ответ API, если Spring Boot работает в профилях, отличных от рабочих, чтобы было легко отлаживать проблемы.
Я уже пробовал \ r и \ n, но онипечатается как есть.То, что я хочу, это новая строка должна отображаться вместо \ n.
Я пробовал и Apache Commons Library и мой пользовательский конвертер, чтобы получить трассировку стека в формате String.
//Using Apache Commons library
private String getStackTrace(Throwable ex) {
return ExceptionUtils.getStackTrace(ex);
}
//Custom
private String getCustomStackTrace(Throwable throwable) {
//add the class name and any message passed to constructor
StringBuilder result = new StringBuilder();
result.append(throwable.toString());
String NL = System.getProperty("line.separator");
//add each element of the stack trace
for (StackTraceElement element : throwable.getStackTrace()){
result.append(element);
result.append(NL);
}
return result.toString();
}
вывод JsonЯ получаю в Почтальоне:
{
"apiStackTrace": "java.lang.NullPointerException at xxx.xxx.Controller.getxxxxx(ABC.java:56)\n\t at xxx.xxx.xxxController$$FastClassBySpringCGLIB$$fd2ed167.invoke(<generated>)\n\tat org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)"
"status": "failure",
}
Ожидаемый Json
{
"apiStackTrace": "
java.lang.NullPointerException at xxx.xxx.Controller.getxxxxx(ABC.java:56)
xxx.xxx.xxxController$$FastClassBySpringCGLIB$$fd2ed167.invoke(<generated>
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)"
"status": "failure",
}
Если вы видите, что я получаю в apiStackTrace, печатается \ n \ t символов в ответ, что делает его нечитаемым.
Мне нужно, чтобы в apiStackTrace были явные новые строки, чтобы сделать его более читабельным.
Так что вопрос в том, как этого добиться.
PS: Это изменение для DEVи только профиль QA, поэтому в ответе почтальона мы хотим видеть трассировку стека, чтобы избежать повторного открытия файла журнала.