1 | <?php
|
---|
2 | /**
|
---|
3 | * log4php is a PHP port of the log4j java logging package.
|
---|
4 | *
|
---|
5 | * <p>This framework is based on log4j (see {@link http://jakarta.apache.org/log4j log4j} for details).</p>
|
---|
6 | * <p>Design, strategies and part of the methods documentation are developed by log4j team
|
---|
7 | * (Ceki Gülcü as log4j project founder and
|
---|
8 | * {@link http://jakarta.apache.org/log4j/docs/contributors.html contributors}).</p>
|
---|
9 | *
|
---|
10 | * <p>PHP port, extensions and modifications by VxR. All rights reserved.<br>
|
---|
11 | * For more information, please see {@link http://www.vxr.it/log4php/}.</p>
|
---|
12 | *
|
---|
13 | * <p>This software is published under the terms of the LGPL License
|
---|
14 | * a copy of which has been included with this distribution in the LICENSE file.</p>
|
---|
15 | *
|
---|
16 | * @package log4php
|
---|
17 | */
|
---|
18 |
|
---|
19 | /**
|
---|
20 | * LOG4PHP_DIR points to the log4php root directory.
|
---|
21 | *
|
---|
22 | * If not defined it will be set automatically when the first package classfile
|
---|
23 | * is included
|
---|
24 | *
|
---|
25 | * @var string
|
---|
26 | */
|
---|
27 | if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__));
|
---|
28 |
|
---|
29 | require_once(LOG4PHP_DIR . '/LoggerHierarchy.php');
|
---|
30 |
|
---|
31 | if (!defined('LOG4PHP_DEFAULT_INIT_OVERRIDE')) {
|
---|
32 | if (isset($_ENV['log4php.defaultInitOverride'])) {
|
---|
33 | /**
|
---|
34 | * @ignore
|
---|
35 | */
|
---|
36 | define('LOG4PHP_DEFAULT_INIT_OVERRIDE',
|
---|
37 | LoggerOptionConverter::toBoolean($_ENV['log4php.defaultInitOverride'], false)
|
---|
38 | );
|
---|
39 | } elseif (isset($GLOBALS['log4php.defaultInitOverride'])) {
|
---|
40 | /**
|
---|
41 | * @ignore
|
---|
42 | */
|
---|
43 | define('LOG4PHP_DEFAULT_INIT_OVERRIDE',
|
---|
44 | LoggerOptionConverter::toBoolean($GLOBALS['log4php.defaultInitOverride'], false)
|
---|
45 | );
|
---|
46 | } else {
|
---|
47 | /**
|
---|
48 | * Controls init execution
|
---|
49 | *
|
---|
50 | * With this constant users can skip the default init procedure that is
|
---|
51 | * called when this file is included.
|
---|
52 | *
|
---|
53 | * <p>If it is not user defined, log4php tries to autoconfigure using (in order):</p>
|
---|
54 | *
|
---|
55 | * - the <code>$_ENV['log4php.defaultInitOverride']</code> variable.
|
---|
56 | * - the <code>$GLOBALS['log4php.defaultInitOverride']</code> global variable.
|
---|
57 | * - defaults to <i>false</i>
|
---|
58 | *
|
---|
59 | * @var boolean
|
---|
60 | */
|
---|
61 | define('LOG4PHP_DEFAULT_INIT_OVERRIDE', false);
|
---|
62 | }
|
---|
63 | }
|
---|
64 |
|
---|
65 | if (!defined('LOG4PHP_CONFIGURATION')) {
|
---|
66 | if (isset($_ENV['log4php.configuration'])) {
|
---|
67 | /**
|
---|
68 | * @ignore
|
---|
69 | */
|
---|
70 | define('LOG4PHP_CONFIGURATION', trim($_ENV['log4php.configuration']));
|
---|
71 | } else {
|
---|
72 | /**
|
---|
73 | * Configuration file.
|
---|
74 | *
|
---|
75 | * <p>This constant tells configurator classes where the configuration
|
---|
76 | * file is located.</p>
|
---|
77 | * <p>If not set by user, log4php tries to set it automatically using
|
---|
78 | * (in order):</p>
|
---|
79 | *
|
---|
80 | * - the <code>$_ENV['log4php.configuration']</code> enviroment variable.
|
---|
81 | * - defaults to 'log4php.properties'.
|
---|
82 | *
|
---|
83 | * @var string
|
---|
84 | */
|
---|
85 | define('LOG4PHP_CONFIGURATION', 'log4php.properties');
|
---|
86 | }
|
---|
87 | }
|
---|
88 |
|
---|
89 | if (!defined('LOG4PHP_CONFIGURATOR_CLASS')) {
|
---|
90 | if ( strtolower(substr( LOG4PHP_CONFIGURATION, -4 )) == '.xml') {
|
---|
91 | /**
|
---|
92 | * @ignore
|
---|
93 | */
|
---|
94 | define('LOG4PHP_CONFIGURATOR_CLASS', LOG4PHP_DIR . '/xml/LoggerDOMConfigurator');
|
---|
95 | } else {
|
---|
96 | /**
|
---|
97 | * Holds the configurator class name.
|
---|
98 | *
|
---|
99 | * <p>This constant is set with the fullname (path included but non the
|
---|
100 | * .php extension) of the configurator class that init procedure will use.</p>
|
---|
101 | * <p>If not set by user, log4php tries to set it automatically.</p>
|
---|
102 | * <p>If {@link LOG4PHP_CONFIGURATION} has '.xml' extension set the
|
---|
103 | * constants to '{@link LOG4PHP_DIR}/xml/{@link LoggerDOMConfigurator}'.</p>
|
---|
104 | * <p>Otherwise set the constants to
|
---|
105 | * '{@link LOG4PHP_DIR}/{@link LoggerPropertyConfigurator}'.</p>
|
---|
106 | *
|
---|
107 | * <p><b>Security Note</b>: classfile pointed by this constant will be brutally
|
---|
108 | * included with a:
|
---|
109 | * <code>@include_once(LOG4PHP_CONFIGURATOR_CLASS . ".php");</code></p>
|
---|
110 | *
|
---|
111 | * @var string
|
---|
112 | */
|
---|
113 | define('LOG4PHP_CONFIGURATOR_CLASS', LOG4PHP_DIR . '/LoggerPropertyConfigurator');
|
---|
114 | }
|
---|
115 | }
|
---|
116 |
|
---|
117 | if (!LOG4PHP_DEFAULT_INIT_OVERRIDE) {
|
---|
118 | if (!LoggerManagerDefaultInit())
|
---|
119 | LoggerLog::warn("LOG4PHP main() Default Init failed.");
|
---|
120 | }
|
---|
121 |
|
---|
122 | /**
|
---|
123 | * Default init procedure.
|
---|
124 | *
|
---|
125 | * <p>This procedure tries to configure the {@link LoggerHierarchy} using the
|
---|
126 | * configurator class defined via {@link LOG4PHP_CONFIGURATOR_CLASS} that tries
|
---|
127 | * to load the configurator file defined in {@link LOG4PHP_CONFIGURATION}.
|
---|
128 | * If something goes wrong a warn is raised.</p>
|
---|
129 | * <p>Users can skip this procedure using {@link LOG4PHP_DEFAULT_INIT_OVERRIDE}
|
---|
130 | * constant.</p>
|
---|
131 | *
|
---|
132 | * @return boolean
|
---|
133 | */
|
---|
134 | function LoggerManagerDefaultInit()
|
---|
135 | {
|
---|
136 | $configuratorClass = basename(LOG4PHP_CONFIGURATOR_CLASS);
|
---|
137 | if (!class_exists($configuratorClass)) {
|
---|
138 | @include_once(LOG4PHP_CONFIGURATOR_CLASS . ".php");
|
---|
139 | }
|
---|
140 | if (class_exists($configuratorClass)) {
|
---|
141 |
|
---|
142 | return call_user_func(array($configuratorClass, 'configure'), LOG4PHP_CONFIGURATION);
|
---|
143 |
|
---|
144 | } else {
|
---|
145 | LoggerLog::warn("LoggerManagerDefaultInit() Configurator '{$configuratorClass}' doesnt exists");
|
---|
146 | return false;
|
---|
147 | }
|
---|
148 | }
|
---|
149 |
|
---|
150 | /**
|
---|
151 | * Use the LoggerManager to get Logger instances.
|
---|
152 | *
|
---|
153 | * @author VxR <vxr@vxr.it>
|
---|
154 | * @version $Revision: 1.17 $
|
---|
155 | * @package log4php
|
---|
156 | * @see Logger
|
---|
157 | * @todo create a configurator selector
|
---|
158 | */
|
---|
159 | class LoggerManager {
|
---|
160 |
|
---|
161 | /**
|
---|
162 | * check if a given logger exists.
|
---|
163 | *
|
---|
164 | * @param string $name logger name
|
---|
165 | * @static
|
---|
166 | * @return boolean
|
---|
167 | */
|
---|
168 | function exists($name)
|
---|
169 | {
|
---|
170 | $repository =& LoggerManager::getLoggerRepository();
|
---|
171 | return $repository->exists($name);
|
---|
172 | }
|
---|
173 |
|
---|
174 | /**
|
---|
175 | * Returns an array this whole Logger instances.
|
---|
176 | *
|
---|
177 | * @static
|
---|
178 | * @see Logger
|
---|
179 | * @return array
|
---|
180 | */
|
---|
181 | function getCurrentLoggers()
|
---|
182 | {
|
---|
183 | $repository =& LoggerManager::getLoggerRepository();
|
---|
184 | return $repository->getCurrentLoggers();
|
---|
185 | }
|
---|
186 |
|
---|
187 | /**
|
---|
188 | * Returns the root logger.
|
---|
189 | *
|
---|
190 | * @static
|
---|
191 | * @return object
|
---|
192 | * @see LoggerRoot
|
---|
193 | */
|
---|
194 | function &getRootLogger()
|
---|
195 | {
|
---|
196 | $repository =& LoggerManager::getLoggerRepository();
|
---|
197 | return $repository->getRootLogger();
|
---|
198 | }
|
---|
199 |
|
---|
200 | /**
|
---|
201 | * Returns the specified Logger.
|
---|
202 | *
|
---|
203 | * @param string $name logger name
|
---|
204 | * @param LoggerFactory $factory a {@link LoggerFactory} instance or null
|
---|
205 | * @static
|
---|
206 | * @return Logger
|
---|
207 | */
|
---|
208 | function &getLogger($name, $factory = null)
|
---|
209 | {
|
---|
210 | $repository =& LoggerManager::getLoggerRepository();
|
---|
211 | return $repository->getLogger($name, $factory);
|
---|
212 | }
|
---|
213 |
|
---|
214 | /**
|
---|
215 | * Returns the LoggerHierarchy.
|
---|
216 | *
|
---|
217 | * @static
|
---|
218 | * @return LoggerHierarchy
|
---|
219 | */
|
---|
220 | function &getLoggerRepository()
|
---|
221 | {
|
---|
222 | return LoggerHierarchy::singleton();
|
---|
223 | }
|
---|
224 |
|
---|
225 |
|
---|
226 | /**
|
---|
227 | * Destroy loggers object tree.
|
---|
228 | *
|
---|
229 | * @static
|
---|
230 | * @return boolean
|
---|
231 | */
|
---|
232 | function resetConfiguration()
|
---|
233 | {
|
---|
234 | $repository =& LoggerManager::getLoggerRepository();
|
---|
235 | return $repository->resetConfiguration();
|
---|
236 | }
|
---|
237 |
|
---|
238 | /**
|
---|
239 | * Does nothing.
|
---|
240 | * @static
|
---|
241 | */
|
---|
242 | function setRepositorySelector($selector, $guard)
|
---|
243 | {
|
---|
244 | return;
|
---|
245 | }
|
---|
246 |
|
---|
247 | /**
|
---|
248 | * Safely close all appenders.
|
---|
249 | * @static
|
---|
250 | */
|
---|
251 | function shutdown()
|
---|
252 | {
|
---|
253 | $repository =& LoggerManager::getLoggerRepository();
|
---|
254 | return $repository->shutdown();
|
---|
255 | }
|
---|
256 | }
|
---|
257 | ?> |
---|