Как включать/выключать настройки класса через application.properties БЕЗ Spring Boot
Написал свой класс логгирования для Http запросов и использую его в @ControllerAdvice
public class HttpLogger {
public static void logging(Object handlerClass,
HttpServletRequest req,
HttpServletResponse resp,
Exception e) {
Log.logger.info("{} catch and try to resolve exception;" +
"\nException message: {};" +
"\nException class: {};" +
"\nTime creating exception: {};", handlerClass.getClass(), e.getMessage(), e.getClass(), ZonedDateTime.now(ZoneId.of("Z")));
Log.logger.info("HTTP Method - {}" +
"\nHTTP Status - {}" +
"\nRequestURI {}", req.getMethod(), resp.getStatus(), req.getRequestURI());
}
}
Я не использую SpringBoot, но хочу сделать следующее:
В application.properties добавить параметр
httpLogger.enabled=true. Когда значение true - происходи логгирование, false - соответственно нет.
В голову пришла идея:
- Сканировать
application.properties - Найти свой параметр
httpLogger.enabled - В зависимости от значения логгировать.
Метод будет иметь +- такой вид
if(enabled){
//логировать
} else {
//ничего не делать
}
И собственно сам вопрос: я понимаю, что это будет правильно работать, но может есть какое-то более изящное решение проблемы? Не хочу изобретать велосипед.
Также задумываюсь про BeanPostProcessor и там через MBean всё контролировать.
Ответы (1 шт):
Автор решения: Илья Гопак
→ Ссылка
Не знаю самый ли правильный это вариант, но я сделал так:
@Component
@PropertySource("classpath:application.properties")
public class HttpLogger {
@Value("${httpLogger.enabled}")
private boolean enabled;
public void logging(Object handlerClass,
HttpServletRequest req,
HttpServletResponse resp,
Exception e) {
if (enabled) {
Log.logger.info("{} catch and try to resolve exception;" +
"\nException message: {};" +
"\nException class: {};" +
"\nTime creating exception: {};", handlerClass.getClass(), e.getMessage(), e.getClass(), ZonedDateTime.now(ZoneId.of("Z")));
Log.logger.info("HTTP Method - {}" +
"\nHTTP Status - {}" +
"\nRequestURI {}", req.getMethod(), resp.getStatus(), req.getRequestURI());
}
}
}