업무 환경에서 DataDog을 사용하고 있는데, DataDog에서 오류로그를 line별로 요금을 받고 있어 라인 수가 많은 Exception 로그를 줄일 수 있는지에 대한 인프라 조직 요청이 있었다.
오류 로그가 긴 Exception을 한줄로 처리했다.
모든 Exception을 적용하지는 않고 자주 발생하고, 유독 긴 오류에 대해서만 작업을 진행했다.
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class ExceptionUtils {
public static String toOneLineExceptionDetailLog(Throwable throwable, String lineSeparator) {
var stackTraces = throwable.getStackTrace();
StringBuilder builder = new StringBuilder();
builder.append(throwable.toString());
for (StackTraceElement element : stackTraces) {
builder.append(lineSeparator).append("\tat ").append(element);
}
return builder.toString();
}
public static String toOneLineExceptionDetailLog(Throwable throwable) {
return toOneLineExceptionDetailLog(throwable, "<br>");
}
}
try {
occurException(testValue);
} catch (NumberFormatException e) {
log.debug("[Test: one line stack trace = {}", ExceptionUtils.toOneLineExceptionDetailLog(e));
}