Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DryRunLogger.php
Go to the documentation of this file.
1 <?php
8 
10 
17 {
21  const INPUT_KEY_DRY_RUN_MODE = 'dry-run';
22 
26  const FILE_NAME = 'dry-run-installation.log';
27 
32  const LINE_SEPARATOR = "\n\n";
33 
37  private $fileDriver;
38 
42  private $directoryList;
43 
48  public function __construct(
49  \Magento\Framework\Filesystem\Driver\File $fileDriver,
50  DirectoryList $directoryList
51  ) {
52  $this->fileDriver = $fileDriver;
53  $this->directoryList = $directoryList;
54  }
55 
62  private function assertLogFolderExists($logFolderPath)
63  {
64  if (!$this->fileDriver->isDirectory($logFolderPath)) {
65  $this->fileDriver->createDirectory($logFolderPath);
66  }
67 
68  if (!$this->fileDriver->isDirectory($logFolderPath)) {
69  throw new \Exception(sprintf("Can`t create log directory: %s", $logFolderPath));
70  }
71  }
72 
77  private function assertFileExists($fileName)
78  {
79  if (!$this->fileDriver->isExists($fileName)) {
80  $this->fileDriver->touch($fileName);
81  }
82 
83  if (!$this->fileDriver->isExists($fileName)) {
84  throw new \Exception(sprintf("Can`t create file %s", $fileName));
85  }
86  }
87 
93  public function prepareToDryRun()
94  {
95  if ($this->fileDriver->isExists($this->getLoggerFile())) {
96  if (!$this->fileDriver->isWritable($this->getLoggerFile())) {
97  throw new \Exception(sprintf('Dry run logger file is not writable'));
98  }
99 
100  $this->fileDriver->deleteFile($this->getLoggerFile());
101  $this->fileDriver->touch($this->getLoggerFile());
102  }
103  }
104 
110  private function getLoggerFolder()
111  {
112  return $this->directoryList->getPath(DirectoryList::VAR_DIR) .
113  DIRECTORY_SEPARATOR . 'log';
114  }
115 
121  private function getLoggerFile()
122  {
123  return $this->getLoggerFolder() . DIRECTORY_SEPARATOR . self::FILE_NAME;
124  }
125 
133  public function log($sql)
134  {
135  $loggerFolder = $this->getLoggerFolder();
136  $loggerFile = $this->getLoggerFile();
137  $this->assertLogFolderExists($loggerFolder);
138  $this->assertFileExists($loggerFile);
139 
140  if ($this->fileDriver->isWritable($loggerFile)) {
141  $fd = $this->fileDriver->fileOpen($loggerFile, 'a');
142  $this->fileDriver->fileWrite($fd, $sql . self::LINE_SEPARATOR);
143  } else {
144  throw new \Exception(sprintf('Can`t write to file %s', $loggerFile));
145  }
146  }
147 }
__construct(\Magento\Framework\Filesystem\Driver\File $fileDriver, DirectoryList $directoryList)
$fileName
Definition: translate.phtml:15