<?php 
/*** 
 * Copyright 2016 Igor Dyshlenko 
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy 
 * of this software and associated documentation files (the "Software"), to deal 
 * in the Software without restriction, including without limitation the rights 
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
 * copies of the Software, and to permit persons to whom the Software is 
 * furnished to do so, subject to the following conditions: 
 *  
 * The above copyright notice and this permission notice shall be included in 
 * all copies or substantial portions of the Software. 
 *  
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
 * SOFTWARE. 
 */ 
 
/** 
 * LogWrapper is a wrapper for the Log class logger from the PEAR package and 
 * a stub for the Shell class. 
 * 
 * @author Igor Dyshlenko 
 * @category Console 
 * @license https://opensource.org/licenses/MIT MIT 
 */ 
 
class LogWrapper { 
 
    /** 
     * Instance of PEAR\Log object. 
     * @var PEAR\Log  
     */ 
    protected $logger = null; 
 
    /** 
     * Constructor 
     * @param PEAR\Log $logger 
     */ 
    public function __construct($logger) { 
        if ($logger && is_object($logger) && is_a($logger, 'Log')) { 
            $this->logger = $logger; 
        } 
    } 
 
    /** 
     * Log an alert event. It will log a message at the PEAR_LOG_ALERT log level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function alert($msg){ 
        if ($this->logger) { 
            return $this->logger->alert($msg); 
        } 
    } 
 
    /** 
     * Log a critical event. It will log a message at the PEAR_LOG_CRIT log 
     * level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function crit($msg){ 
        if ($this->logger) { 
            return $this->logger->crit($msg); 
        } 
    } 
 
    /** 
     * Log a debug event. It will log a message at the PEAR_LOG_DEBUG log level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function debug($msg){ 
        if ($this->logger) { 
            return $this->logger->debug($msg); 
        } 
    } 
 
    /** 
     * Log a emergency event. It will log a message at the PEAR_LOG_EMERG log 
     * level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function emerg($msg){ 
        if ($this->logger) { 
            return $this->logger->emerg($msg); 
        } 
    } 
 
    /** 
     * Log a error event. It will log a message at the PEAR_LOG_ERR log level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function err($msg){ 
        if ($this->logger) { 
            return $this->logger->err($msg); 
        } 
    } 
 
    /** 
     * Log a information event. It will log a message at the PEAR_LOG_INFO log 
     * level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function info($msg){ 
        if ($this->logger) { 
            return $this->logger->info($msg); 
        } 
    } 
 
    /** 
     * Log an event. 
     * @param mixed $msg 
     * @param int $priority (optional) The priority of the message. Valid values 
     *                are: LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, 
     *                LOG_NOTICE, LOG_INFO, and LOG_DEBUG. The default is LOG_INFO. 
     * @return bool True if the message was successfully logged. 
     */ 
    public function log($msg, $priority = null){ 
        if ($this->logger) { 
            return $this->logger->log($msg); 
        } 
    } 
 
    /** 
     * Log a notice event. It will log a message at the PEAR_LOG_NOTICE log level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function notice($msg){ 
        if ($this->logger) { 
            return $this->logger->notice($msg); 
        } 
    } 
 
    /** 
     * Log a warning event. It will log a message at the PEAR_LOG_WARNING log level. 
     * @param mixed $msg 
     * @return bool True if the message was successfully logged. 
     */ 
    public function warning($msg){ 
        if ($this->logger) { 
            return $this->logger->warning($msg); 
        } 
    } 
}
 
 |