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$
50 : * @since 2.2
51 : */
52 : class LoggerConfigurationAdapterPHP implements LoggerConfigurationAdapter
53 : {
54 : public function convert($url) {
55 5 : if (!file_exists($url)) {
56 1 : throw new LoggerException("File [$url] does not exist.");
57 : }
58 :
59 : // Load the config file
60 4 : $data = @file_get_contents($url);
61 4 : if ($data === false) {
62 0 : $error = error_get_last();
63 0 : throw new LoggerException("Error loading config file: {$error['message']}");
64 : }
65 :
66 4 : $config = @eval('?>' . $data);
67 :
68 4 : if ($config === false) {
69 1 : $error = error_get_last();
70 1 : throw new LoggerException("Error parsing configuration: " . $error['message']);
71 : }
72 :
73 3 : if (empty($config)) {
74 1 : throw new LoggerException("Invalid configuration: empty configuration array.");
75 : }
76 :
77 2 : if (!is_array($config)) {
78 1 : throw new LoggerException("Invalid configuration: not an array.");
79 : }
80 :
81 1 : return $config;
82 : }
83 : }
84 :
|