Logsta sh -logback-encoder: Использовать StructuredArguments без форматирования в сообщении? - PullRequest
0 голосов
/ 18 февраля 2020

Интересно, каковы лучшие практики использования StructuredArguments для ведения журнала вызовов при использовании logsta sh -logback-encoder для входа в формате JSON.

Я хочу записать некоторые структурированные аргументы в отдельных полях , но я не хочу отформатировать эти аргументы в буквальное строковое сообщение.

Если я напишу свои строки журнала, как это, все работает нормально, как я хочу, но оба моих IntelliJ IDEA и Sonarqube stati c анализ кода рассматривает эту проблему c проблем:

log.info("Query executed successfully!", StructuredArguments.value("hits", result.getHits()));
(or more concise)
log.info("Query executed successfully!", v("hits", result.getHits()));

IntelliJ предупреждает об этом в этой строке:

предоставлено больше аргументов (1), чем заполнителей указано (0)

Как этого избежать? Конечно, я могу заставить замолчать предупреждения и добавить для них исключения, но мне интересно, является ли это наилучшей практикой.

1 Ответ

1 голос
/ 19 февраля 2020

Если вы не хотите включать данные в сообщение журнала и хотите избежать предупреждений о состоянии анализа c, используйте Markers вместо StructuredArguments:

import net.logstash.logback.marker.Markers;

log.info(Markers.append("hits", result.getHits()), "Query executed successfully!");

См. здесь для более подробной информации.

...