ソースを参照

new base class Log/Engine/BaseLog

Rachman Chavik 14 年 前
コミット
49bc818d36

+ 61 - 0
lib/Cake/Log/Engine/BaseLog.php

@@ -0,0 +1,61 @@
+<?php
+/**
+ * Base Log Engine class
+ *
+ * PHP 5
+ *
+ * CakePHP(tm) :  Rapid Development Framework (http://cakephp.org)
+ * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright     Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link          http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
+ * @package       Cake.Log.Engine
+ * @since         CakePHP(tm) v 2.2
+ * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
+ */
+
+App::uses('CakeLogInterface', 'Log');
+
+/**
+ * Base log engine class.
+ *
+ * @package       Cake.Log.Engine
+ */
+abstract class BaseLog implements CakeLogInterface {
+
+/**
+ * Engine config
+ *
+ * @var string
+ */
+	protected $_config = array();
+
+/**
+ * __construct method
+ *
+ * @return void
+ */
+	public function __construct($config = array()) {
+		$this->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;
+	}
+
+}

+ 19 - 7
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';

+ 3 - 2
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) {
 	}
+
 }

+ 5 - 1
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) {
 	}
+
 }