From 724cd60cacd02f8ffc2d7cd9c1966d7e71d9bb5c Mon Sep 17 00:00:00 2001 From: Amit Snyderman Date: Thu, 5 Sep 2013 19:22:13 -0400 Subject: [PATCH] Restore logging for cache operations `AbstractCache` exposes the ability to set a logger. Default behavior automatically passes the logger reference down to the cache, unless a specific cache instance was provided. --- src/Mustache/Cache/AbstractCache.php | 27 +++++++++++++++++++++++++ src/Mustache/Cache/FilesystemCache.php | 28 +++++++++++++++++++++++++- src/Mustache/Cache/NoopCache.php | 7 ++++++- src/Mustache/Engine.php | 10 ++++----- test/Mustache/Test/EngineTest.php | 2 +- 5 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 src/Mustache/Cache/AbstractCache.php diff --git a/src/Mustache/Cache/AbstractCache.php b/src/Mustache/Cache/AbstractCache.php new file mode 100644 index 0000000..7120536 --- /dev/null +++ b/src/Mustache/Cache/AbstractCache.php @@ -0,0 +1,27 @@ +logger; + } + + public function setLogger($logger = null) + { + if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) { + throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.'); + } + + $this->logger = $logger; + } + + protected function log($level, $message, array $context = array()) + { + if (isset($this->logger)) { + $this->logger->log($level, $message, $context); + } + } +} diff --git a/src/Mustache/Cache/FilesystemCache.php b/src/Mustache/Cache/FilesystemCache.php index a79a081..c6af6ae 100644 --- a/src/Mustache/Cache/FilesystemCache.php +++ b/src/Mustache/Cache/FilesystemCache.php @@ -1,6 +1,6 @@ getCacheFilename($key); + + $this->log( + Mustache_Logger::DEBUG, + 'Writing to template cache: "{fileName}"', + array('fileName' => $fileName) + ); + $this->writeFile($fileName, $value); $this->load($key); } @@ -39,6 +46,12 @@ class Mustache_Cache_FilesystemCache implements Mustache_Cache { $dirName = dirname($fileName); if (!is_dir($dirName)) { + $this->log( + Mustache_Logger::INFO, + 'Creating Mustache template cache directory: "{dirName}"', + array('dirName' => $dirName) + ); + @mkdir($dirName, 0777, true); if (!is_dir($dirName)) { throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName)); @@ -50,6 +63,13 @@ class Mustache_Cache_FilesystemCache implements Mustache_Cache private function writeFile($fileName, $value) { $dirName = $this->buildDirectoryForFilename($fileName); + + $this->log( + Mustache_Logger::DEBUG, + 'Caching compiled template to "{fileName}"', + array('fileName' => $fileName) + ); + $tempFile = tempnam($dirName, basename($fileName)); if (false !== @file_put_contents($tempFile, $value)) { if (@rename($tempFile, $fileName)) { @@ -58,6 +78,12 @@ class Mustache_Cache_FilesystemCache implements Mustache_Cache return $fileName; } + + $this->log( + Mustache_Logger::ERROR, + 'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"', + array('tempName' => $tempFile, 'fileName' => $fileName) + ); } throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName)); diff --git a/src/Mustache/Cache/NoopCache.php b/src/Mustache/Cache/NoopCache.php index 95fd2d9..d717149 100644 --- a/src/Mustache/Cache/NoopCache.php +++ b/src/Mustache/Cache/NoopCache.php @@ -1,6 +1,6 @@ log( + Mustache_Logger::WARNING, + 'Template cache disabled, evaluating class at runtime', + array() + ); eval("?>".$compiled); } } diff --git a/src/Mustache/Engine.php b/src/Mustache/Engine.php index 1a2fee7..ef3e752 100644 --- a/src/Mustache/Engine.php +++ b/src/Mustache/Engine.php @@ -164,6 +164,10 @@ class Mustache_Engine if (isset($options['strict_callables'])) { $this->strictCallables = $options['strict_callables']; } + + if (!isset($options['cache']) || is_string($options['cache'])) { + $this->getCache()->setLogger($this->getLogger()); + } } /** @@ -506,12 +510,6 @@ class Mustache_Engine { if (!isset($this->cache)) { $this->cache = new Mustache_Cache_NoopCache(); - - $this->log( - Mustache_Logger::WARNING, - 'Template cache disabled', - array() - ); } return $this->cache; diff --git a/test/Mustache/Test/EngineTest.php b/test/Mustache/Test/EngineTest.php index 5b5402b..b63698e 100644 --- a/test/Mustache/Test/EngineTest.php +++ b/test/Mustache/Test/EngineTest.php @@ -294,7 +294,7 @@ class Mustache_Test_EngineTest extends PHPUnit_Framework_TestCase $result = $mustache->render('{{ foo }}', array('foo' => 'FOO')); $this->assertEquals('FOO', $result); - $this->assertContains('WARNING: Template cache disabled', file_get_contents($name)); + $this->assertContains('WARNING: Template cache disabled, evaluating', file_get_contents($name)); } public function testLoggingIsNotTooAnnoying()