diff --git a/lib/Cake/Log/Engine/BaseLog.php b/lib/Cake/Log/Engine/BaseLog.php new file mode 100644 index 000000000..69bcdf781 --- /dev/null +++ b/lib/Cake/Log/Engine/BaseLog.php @@ -0,0 +1,61 @@ +config($config); + } + +/** + * Sets instance config. When $config is null, returns config array + * + * @param array $config engine configuration + * @return array + */ + public function config($config = array()) { + if (!empty($config)) { + if (isset($config['types']) && is_string($config['types'])) { + $config['types'] = array($config['types']); + } + $this->_config = $config; + } + return $this->_config; + } + +} diff --git a/lib/Cake/Log/Engine/FileLog.php b/lib/Cake/Log/Engine/FileLog.php index 81ea12ffc..0d8f73082 100644 --- a/lib/Cake/Log/Engine/FileLog.php +++ b/lib/Cake/Log/Engine/FileLog.php @@ -17,7 +17,7 @@ * @license MIT License (http://www.opensource.org/licenses/mit-license.php) */ -App::uses('CakeLogInterface', 'Log'); +App::uses('BaseLog', 'Log/Engine'); /** * File Storage stream for Logging. Writes logs to different files @@ -25,7 +25,7 @@ App::uses('CakeLogInterface', 'Log'); * * @package Cake.Log.Engine */ -class FileLog implements CakeLogInterface { +class FileLog extends BaseLog { /** * Path to save log files on. @@ -37,15 +37,25 @@ class FileLog implements CakeLogInterface { /** * Constructs a new File Logger. * - * Options + * Config * * - `path` the path to save logs on. * * @param array $options Options for the FileLog, see above. */ - public function __construct($options = array()) { - $options += array('path' => LOGS); - $this->_path = $options['path']; + public function __construct($config = array()) { + parent::__construct($config); + $config = Set::merge(array( + 'path' => LOGS, + 'file' => null, + 'types' => null, + ), $this->_config); + $config = $this->config($config); + $this->_path = $config['path']; + $this->_file = $config['file']; + if (!empty($this->_file) && !preg_match('/\.log$/', $this->_file)) { + $this->_file .= '.log'; + } } /** @@ -58,7 +68,9 @@ class FileLog implements CakeLogInterface { public function write($type, $message) { $debugTypes = array('notice', 'info', 'debug'); - if ($type == 'error' || $type == 'warning') { + if (!empty($this->_file)) { + $filename = $this->_path . $this->_file; + } elseif ($type == 'error' || $type == 'warning') { $filename = $this->_path . 'error.log'; } elseif (in_array($type, $debugTypes)) { $filename = $this->_path . 'debug.log'; diff --git a/lib/Cake/Test/test_app/Lib/Log/Engine/TestAppLog.php b/lib/Cake/Test/test_app/Lib/Log/Engine/TestAppLog.php index 0acb792a1..8ccf3a713 100644 --- a/lib/Cake/Test/test_app/Lib/Log/Engine/TestAppLog.php +++ b/lib/Cake/Test/test_app/Lib/Log/Engine/TestAppLog.php @@ -17,10 +17,11 @@ * @license MIT License (http://www.opensource.org/licenses/mit-license.php) */ -App::uses('CakeLogInterface', 'Log'); +App::uses('BaseLog', 'Log/Engine'); -class TestAppLog implements CakeLogInterface { +class TestAppLog extends BaseLog { public function write($type, $message) { } + } diff --git a/lib/Cake/Test/test_app/Plugin/TestPlugin/Lib/Log/Engine/TestPluginLog.php b/lib/Cake/Test/test_app/Plugin/TestPlugin/Lib/Log/Engine/TestPluginLog.php index d9ce333d7..33ffaf4a1 100644 --- a/lib/Cake/Test/test_app/Plugin/TestPlugin/Lib/Log/Engine/TestPluginLog.php +++ b/lib/Cake/Test/test_app/Plugin/TestPlugin/Lib/Log/Engine/TestPluginLog.php @@ -16,8 +16,12 @@ * @since CakePHP(tm) v 1.3 * @license MIT License (http://www.opensource.org/licenses/mit-license.php) */ -class TestPluginLog implements CakeLogInterface { + +App::uses('BaseLog', 'Log/Engine'); + +class TestPluginLog extends BaseLog { public function write($type, $message) { } + }