pictcode_admin / lib / Cake / Log / LogEngineCollection.php @ 5ad38a95
履歴 | 表示 | アノテート | ダウンロード (2.364 KB)
1 |
<?php
|
---|---|
2 |
/**
|
3 |
* Registry of loaded log engines
|
4 |
*
|
5 |
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
6 |
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
7 |
*
|
8 |
* Licensed under The MIT License
|
9 |
* For full copyright and license information, please see the LICENSE.txt
|
10 |
* Redistributions of files must retain the above copyright notice.
|
11 |
*
|
12 |
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
13 |
* @link http://cakephp.org CakePHP(tm) Project
|
14 |
* @package Cake.Log
|
15 |
* @since CakePHP(tm) v 2.2
|
16 |
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
17 |
*/
|
18 |
|
19 |
App::uses('ObjectCollection', 'Utility'); |
20 |
|
21 |
/**
|
22 |
* Registry of loaded log engines
|
23 |
*
|
24 |
* @package Cake.Log
|
25 |
*/
|
26 |
class LogEngineCollection extends ObjectCollection { |
27 |
|
28 |
/**
|
29 |
* Loads/constructs a Log engine.
|
30 |
*
|
31 |
* @param string $name instance identifier
|
32 |
* @param array $options Setting for the Log Engine
|
33 |
* @return BaseLog BaseLog engine instance
|
34 |
* @throws CakeLogException when logger class does not implement a write method
|
35 |
*/
|
36 |
public function load($name, $options = array()) { |
37 |
$enable = isset($options['enabled']) ? $options['enabled'] : true; |
38 |
$loggerName = $options['engine']; |
39 |
unset($options['engine']); |
40 |
$className = $this->_getLogger($loggerName); |
41 |
$logger = new $className($options); |
42 |
if (!$logger instanceof CakeLogInterface) { |
43 |
throw new CakeLogException( |
44 |
__d('cake_dev', 'logger class %s does not implement a %s method.', $loggerName, 'write()') |
45 |
); |
46 |
} |
47 |
$this->_loaded[$name] = $logger; |
48 |
if ($enable) { |
49 |
$this->enable($name); |
50 |
} |
51 |
return $logger; |
52 |
} |
53 |
|
54 |
/**
|
55 |
* Attempts to import a logger class from the various paths it could be on.
|
56 |
* Checks that the logger class implements a write method as well.
|
57 |
*
|
58 |
* @param string $loggerName the plugin.className of the logger class you want to build.
|
59 |
* @return mixed boolean false on any failures, string of classname to use if search was successful.
|
60 |
* @throws CakeLogException
|
61 |
*/
|
62 |
protected static function _getLogger($loggerName) { |
63 |
list($plugin, $loggerName) = pluginSplit($loggerName, true); |
64 |
if (substr($loggerName, -3) !== 'Log') { |
65 |
$loggerName .= 'Log'; |
66 |
} |
67 |
App::uses($loggerName, $plugin . 'Log/Engine'); |
68 |
if (!class_exists($loggerName)) { |
69 |
throw new CakeLogException(__d('cake_dev', 'Could not load class %s', $loggerName)); |
70 |
} |
71 |
return $loggerName; |
72 |
} |
73 |
|
74 |
} |