filesystem = $filesystem; if (!empty($fileName)) { $this->fileName = $this->sanitizeFileName($fileName); } parent::__construct( $filePath ? $filePath . $this->fileName : BP . DIRECTORY_SEPARATOR . $this->fileName, $this->loggerType ); $this->setFormatter(new LineFormatter(null, null, true)); } /** * Remove dots from file name * * @param string $fileName * @return string * @throws \InvalidArgumentException */ private function sanitizeFileName($fileName) { if (!is_string($fileName)) { throw new \InvalidArgumentException('Filename expected to be a string'); } $parts = explode('/', $fileName); $parts = array_filter($parts, function ($value) { return !in_array($value, ['', '.', '..']); }); return implode('/', $parts); } /** * @inheritDoc */ public function write(array $record) { $logDir = $this->filesystem->getParentDirectory($this->url); if (!$this->filesystem->isDirectory($logDir)) { $this->filesystem->createDirectory($logDir); } parent::write($record); } }