The loggers cannot be const because they change thier own state. If the loggers are thread safe and don't change the logical state of your object then they are a perfect example of where you should use the mutable keyword.
Make the loggers mutable class member mutable SomeLoggerType my_logger;
. Then you will be able to modify it in const members. This is precisely what mutable
was meant for.
As to your comment about mutable being a bad code smell, mutable is an escape hatch for precisely this kind of purpose. Mutable is fine when you are actually not modifying the logical state of your object (and in c++11 internally synchronised). Another perfectly good example of mutable usage is caching.