How to create a new Folder or Directory Magento 2?
When you are working for a custom module in Magento 2 and need to add the log to the custom file inside the var/log folder.
Log folder contains the multiple log files and if you want to create a new folder for your custom log of the module, You can create a New Folder programmatically using WriteInterface.
A simple demo to create a new folder or directory under the var/log section called Payment, We are adding our custom module log inside the payment folder, We first create a new Payment folder,
<?php namespace Jesadiya\Directory\Model; use Magento\Framework\Filesystem; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Exception\FileSystemException; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Filesystem\Directory\WriteInterface; class CreateDirectory { /** * @var Filesystem */ protected $file; /** * @var WriteInterface */ protected $newDirectory; public function __construct( Filesystem $file ) { $this->newDirectory = $file->getDirectoryWrite(DirectoryList::VAR_DIR); } /** * Create new folder * * @return bool * @throws LocalizedException */ public function createDirectory() { $logPath = "log/payment"; $newDirectory = false; try { $newDirectory = $this->newDirectory->create($logPath); } catch (FileSystemException $e) { throw new LocalizedException( __('We can\'t create directory "%1"', $logPath) ); } return $newDirectory; } }
The new Payment module will be generated after calling the createDirectory() method.
If the payment folder doesn’t exists create a new folder and return true If any issue occurred result will be false.