Actually, (1) deals with itself. Set the logger on the cache with the condition `if (isset($this->logger) && $this->cache->getLogger() === null)` here, and `if ($this->cache->getLogger() === null` when adding a new Logger to the Engine. That makes it work regardless of initialization order, and makes it work with the logger option set second in the Engine constructor.