Ensure String.format is not on the critical path for any operations.

[Performance] Guided by the profiler, located all places where String.format is used to see if the call needs to be cached, or wrapped inside a conditional; wrapped all calls to logger.warn/info/debug inside a conditional. Performance testing shows these changes do improve the performance of create, read, update and delete methods.
It looks like it should, but getLogger is an abstract method, so this abstract class can effectively ask for the logger for any child classes. This is the only way to really do this.