Problem is following code snippet:
if (!$logValidator->isValid($logDir . DS . $file)) {
return;
}
This is checked the file before created. If your log file already exist inside log folder then everything will be fine. If not then this logic will not work. So move this logic after file creation with simple modification, like:
if (!is_dir($logDir)) {
mkdir($logDir);
chmod($logDir, 0750);
}
if (!file_exists($logFile)) {
file_put_contents($logFile, '');
chmod($logFile, 0640);
}
if (!$logValidator->isValid($logDir . DS . $file)) {
if (file_exists($logFile)) {
unlink($logFile);
}
return;
}
So the full method will be:
public static function log($message, $level = null, $file = '', $forceLog = false)
{
if (!self::getConfig()) {
return;
}
try {
$logActive = self::getStoreConfig('dev/log/active');
if (empty($file)) {
$file = self::getStoreConfig('dev/log/file');
}
}
catch (Exception $e) {
$logActive = true;
}
if (!self::$_isDeveloperMode && !$logActive && !$forceLog) {
return;
}
static $loggers = array();
$level = is_null($level) ? Zend_Log::DEBUG : $level;
$file = empty($file) ?
(string) self::getConfig()->getNode('dev/log/file', Mage_Core_Model_Store::DEFAULT_CODE) : basename($file);
// Validate file extension before save. Allowed file extensions: log, txt, html, csv
$_allowedFileExtensions = explode(
',',
(string) self::getConfig()->getNode('dev/log/allowedFileExtensions', Mage_Core_Model_Store::DEFAULT_CODE)
);
$logValidator = new Zend_Validate_File_Extension($_allowedFileExtensions);
$logDir = self::getBaseDir('var') . DS . 'log';
try {
if (!isset($loggers[$file])) {
$logFile = $logDir . DS . $file;
if (!is_dir($logDir)) {
mkdir($logDir);
chmod($logDir, 0750);
}
if (!file_exists($logFile)) {
file_put_contents($logFile, '');
chmod($logFile, 0640);
}
if (!$logValidator->isValid($logDir . DS . $file)) {
if (file_exists($logFile)) {
unlink($logFile);
}
return;
}
$format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
$formatter = new Zend_Log_Formatter_Simple($format);
$writerModel = (string)self::getConfig()->getNode('global/log/core/writer_model');
if (!self::$_app || !$writerModel) {
$writer = new Zend_Log_Writer_Stream($logFile);
}
else {
$writer = new $writerModel($logFile);
}
$writer->setFormatter($formatter);
$loggers[$file] = new Zend_Log($writer);
}
if (is_array($message) || is_object($message)) {
$message = print_r($message, true);
}
$message = addcslashes($message, '<?');
$loggers[$file]->log($message, $level);
}
catch (Exception $e) {
}
}