Browse Source

Fix type casting of string scopes to array in log engines

ADmad 13 years ago
parent
commit
f6215129f6
2 changed files with 16 additions and 2 deletions
  1. 4 2
      lib/Cake/Log/Engine/BaseLog.php
  2. 12 0
      lib/Cake/Test/Case/Log/CakeLogTest.php

+ 4 - 2
lib/Cake/Log/Engine/BaseLog.php

@@ -57,8 +57,10 @@ abstract class BaseLog implements CakeLogInterface {
  */
 	public function config($config = array()) {
 		if (!empty($config)) {
-			if (isset($config['types']) && is_string($config['types'])) {
-				$config['types'] = array($config['types']);
+			foreach (array('types', 'scopes') as $option) {
+				if (isset($config[$option]) && is_string($config[$option])) {
+					$config[$option] = array($config[$option]);
+				}
 			}
 			$this->_config = $config;
 		}

+ 12 - 0
lib/Cake/Test/Case/Log/CakeLogTest.php

@@ -424,6 +424,18 @@ class CakeLogTest extends CakeTestCase {
 	public function testScopedLogging() {
 		$this->_resetLogConfig();
 		$this->_deleteLogs();
+
+		CakeLog::config('string-scope', array(
+			'engine' => 'FileLog',
+			'types' => array('info', 'notice', 'warning'),
+			'scopes' => 'string-scope',
+			'file' => 'string-scope.log'
+		));
+		CakeLog::write('info', 'info message', 'string-scope');
+		$this->assertTrue(file_exists(LOGS . 'string-scope.log'));
+
+		CakeLog::drop('string-scope');
+
 		CakeLog::config('shops', array(
 			'engine' => 'FileLog',
 			'types' => array('info', 'notice', 'warning'),