public function log($level, $message, $context = [])
{
if ($this->_firstLog) {
$this->_file = $this->alias->resolve($this->_file);
$dir = dirname($this->_file);
/** @noinspection NotOptimalIfConditionsInspection */
if (!is_dir($dir) && !@mkdir($dir, 0755, true) && !is_dir($dir)) {
error_log('Unable to create \'' . $dir . '\' directory: ' . error_get_last()['message']);
}
$this->_firstLog = false;
}
$context['date'] = date('Y-m-d H:i:s', $context['date']);
$replaced = [];
foreach ($context as $k => $v) {
$replaced["%{$k}%"] = $v;
}
$replaced['%message%'] = $message . PHP_EOL;
$log = strtr($this->_format, $replaced);
if (file_put_contents($this->_file, $log, FILE_APPEND | LOCK_EX) === false) {
error_log('Write log to file failed: ' . $this->_file);
}
}