Как сопоставить ошибки REST с записями журнала с помощью slf4j? ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Как сопоставить ошибки REST с записями журнала с помощью slf4j?

Сообщение Anonymous »

Во внутреннем коде, когда метод конечной точки REST создает исключение, конечная точка должна возвращать полезные данные с соответствующим статусом ошибки http, например 500. Также рекомендуется, чтобы полезные данные ответа REST не включали само исключение, поскольку это может привести к утечке информации о безопасности. Регистрация исключения также является хорошей практикой для последующей отладки.
Мы хотели бы вернуть полезную нагрузку из вызова REST, которую позже можно будет сопоставить с записью журнала. Один из способов сделать это — использовать следующий шаблон:

Код: Выделить всё

 // next line would be nice, but doesn't work
long timestampOfLogEntry = LOGGER.error("Unexpected error in REST call", exception);
// return a REST payload with the timestamp - so we can lookup the error later
return status(INTERNAL_SERVER_ERROR, new response("Unexpected error", timestampOfLogEntry))
Однако методы LOGGER имеют возвращаемые типы «void» вместо возврата метки времени или чего-либо еще, что можно было бы использовать для идентификации записи журнала позже.
Одним из решений было бы записать нашу собственную временную метку и включить ее в журнал, но это было бы избыточно с временной меткой, которую система логгера создает автоматически. Мы также могли бы создать какое-то случайное число для включения как в журнал, так и в возвращаемую полезную нагрузку, но это добавит шума в журнал.
Это кажется проблемой, универсальной для всех реализаций конечных точек REST. , по крайней мере, те, кто использует Java и общие платформы ведения журналов. Есть ли общее решение, которое я пропустил?

Подробнее здесь: https://stackoverflow.com/questions/784 ... sing-slf4j

Вернуться в «JAVA»