library/log4php/configurators/LoggerConfigurationAdapterPHP.php
changeset 46 f11c31f7fa3e
parent 45 a56e7f9a0463
child 47 03388ec805b4
equal deleted inserted replaced
45:a56e7f9a0463 46:f11c31f7fa3e
     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