Use virtuals instead macro for logging