<?php
/**
 * Copyright © 2012 Alcatel-Lucent.
 *
 * See the NOTICE file distributed with this work for additional information regarding copyright ownership. Licensed to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the specific language governing permissions and limitations under the License.
 */


require_once "Logger.php";
require_once "LoggerInterface.php";

/**
 *
 * @author Trevor Pesout <>
 * @version $Id$
 * @copyright 10/12/11 2:51 PM
 */


class FileLogger extends Logger {
    protected $logLocation;
    protected $format;

    function __construct($logLocation, $logLevel = LoggerInterface::INFO, $format = "%l %i -- %d %t -- %m\r\n") {
        $this->logLocation = $logLocation;
        $this->logLevel = $logLevel;
        $this->logFormat = $format;

        if (!fopen($logLocation, 'a+')) {
            trigger_error("Logfile '$logLocation' cannot be opened.", E_USER_WARNING);
            $this->logLocation = null;
        }
    }

    function log($message, $priority = LoggerInterface::INFO) {
        if ($priority < $this->logLevel || $this->logLocation == null) return;

        if (!($handle = fopen($this->logLocation, 'a+'))) {
            trigger_error("Logfile '$this->logLocation' cannot be opened.", E_USER_WARNING);
            $this->logLocation = null;
            return;
        }
        fwrite($handle, $this->format($message, $priority));
        fclose($handle);
    }

}