#java #debugging #api
#java #отладка #API
Вопрос:
Я пишу API, который мне нужно передать следующему разработчику в виде jar-файла, который он / она будет использовать в своей программе. Каков наилучший способ написания отладочного кода внутри API, который будет управляться использующим его кодом.
Большое спасибо.
Ответ №1:
- Регистрируйте на разных уровнях: уровень отладки для мельчайших деталей, информация для полезных вещей, предупреждение для плохих вещей.
- Предоставьте средства тестирования, открыв свой API через интерфейсы, чтобы упростить редактирование. Это позволяет тестировать различные сценарии как внутри вашего API, так и в коде, который его использует.
- Предоставьте точки расширения (используя те же интерфейсы), чтобы максимально удовлетворить непредвиденные потребности. (Вы не получите их все, но так оно и есть.)
- Предоставьте образцы кода и / или модульные тесты, которые используют основную часть функциональности API.
- Предоставьте письменную документацию, которая объясняет, почему все работает так, как они работают. Код объясняет, как это работает.
Ответ №2:
Я думаю, вы говорите о журнале отладки? используйте log4j:
if (log.isDebugEnabled()) {
log.debug("xxxxxxxxxxxxxxxxxxxxxxx");
}
ОБНОВЛЕНИЕ: log4j может настроить log level
для определенного класса: поместите следующее в log4j.properties
log4j.logger.com.test.Test=DEBUG
Комментарии:
1. На самом деле мой вопрос заключается в том, как мое ведение журнала будет согласовываться с «внешним» ведением журнала. У них уже есть свой уровень ведения журнала в приложении. И они хотят установить другое ведение журнала для вызовов API.
Ответ №3:
Если вы просто отправляете JAR, было бы так здорово не зависеть от log4j в первую очередь, а позволить пользователям вашего плагина создавать свой собственный «LoggerFactory». Все «Регистраторы», которые вы получаете в своем коде, получены через эту фабрику таким же образом, как вы извлекли бы их из log4j (например, путем передачи имени класса), и должны иметь аналогичные уровни.
Таким образом, клиенты, которые хотят использовать log4j, все еще могут, а клиенты, которые используют другой регистратор, могут подключить его в один миг.