1 <?php |
|
2 /** |
|
3 * Licensed to the Apache Software Foundation (ASF) under one or more |
|
4 * contributor license agreements. See the NOTICE file distributed with |
|
5 * this work for additional information regarding copyright ownership. |
|
6 * The ASF licenses this file to You under the Apache License, Version 2.0 |
|
7 * (the "License"); you may not use this file except in compliance with |
|
8 * the License. You may obtain a copy of the License at |
|
9 * |
|
10 * http://www.apache.org/licenses/LICENSE-2.0 |
|
11 * |
|
12 * Unless required by applicable law or agreed to in writing, software |
|
13 * distributed under the License is distributed on an "AS IS" BASIS, |
|
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
15 * See the License for the specific language governing permissions and |
|
16 * limitations under the License. |
|
17 * |
|
18 * @package log4php |
|
19 */ |
|
20 |
|
21 /** |
|
22 * Converts PHP configuration files to a PHP array. |
|
23 * |
|
24 * The file should only hold the PHP config array preceded by "return". |
|
25 * |
|
26 * Example PHP config file: |
|
27 * <code> |
|
28 * <?php |
|
29 * return array( |
|
30 * 'rootLogger' => array( |
|
31 * 'level' => 'info', |
|
32 * 'appenders' => array('default') |
|
33 * ), |
|
34 * 'appenders' => array( |
|
35 * 'default' => array( |
|
36 * 'class' => 'LoggerAppenderEcho', |
|
37 * 'layout' => array( |
|
38 * 'class' => 'LoggerLayoutSimple' |
|
39 * ) |
|
40 * ) |
|
41 * ) |
|
42 * ) |
|
43 * ?> |
|
44 * </code> |
|
45 * |
|
46 * @package log4php |
|
47 * @subpackage configurators |
|
48 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
|
49 * @version $Revision: 1343601 $ |
|
50 * @since 2.2 |
|
51 */ |
|
52 class LoggerConfigurationAdapterPHP implements LoggerConfigurationAdapter { |
|
53 public function convert($url) { |
|
54 if (!file_exists($url)) { |
|
55 throw new LoggerException("File [$url] does not exist."); |
|
56 } |
|
57 |
|
58 // Load the config file |
|
59 $data = @file_get_contents($url); |
|
60 if ($data === false) { |
|
61 $error = error_get_last(); |
|
62 throw new LoggerException("Error loading config file: {$error['message']}"); |
|
63 } |
|
64 |
|
65 $config = @eval('?>' . $data); |
|
66 |
|
67 if ($config === false) { |
|
68 $error = error_get_last(); |
|
69 throw new LoggerException("Error parsing configuration: " . $error['message']); |
|
70 } |
|
71 |
|
72 if (empty($config)) { |
|
73 throw new LoggerException("Invalid configuration: empty configuration array."); |
|
74 } |
|
75 |
|
76 if (!is_array($config)) { |
|
77 throw new LoggerException("Invalid configuration: not an array."); |
|
78 } |
|
79 |
|
80 return $config; |
|
81 } |
|
82 } |
|
83 |
|