Одним из решений является использование AspectJ для этого, поскольку вы можете управлять поведением на основе аннотаций.
Вот учебник о том, как использовать аннотации в качестве точек соединения:
http://www.eclipse.org/aspectj//doc/next/adk15notebook/annotations-pointcuts-and-advice.html
То, что вы могли бы сделать, это иметь:
@DebugMessage
private void printOut(String msg, Object value)
{ }
Тогда, в вашем аспекте, вы могли бы сделать так, чтобы этот звонок println
.
Таким образом, в производстве аспект не включен, но, если вам когда-нибудь понадобится активировать его, просто добавьте аспект, даже в производственный код, для некоторой отладки.