BaseLogger.class.php

Go to the documentation of this file.
00001 <?php
00002 /***************************************************************************
00003  *   Copyright (C) 2007 by Ivan Y. Khvostishkov                            *
00004  *                                                                         *
00005  *   This program is free software; you can redistribute it and/or modify  *
00006  *   it under the terms of the GNU Lesser General Public License as        *
00007  *   published by the Free Software Foundation; either version 3 of the    *
00008  *   License, or (at your option) any later version.                       *
00009  *                                                                         *
00010  ***************************************************************************/
00011 
00015     abstract class BaseLogger
00016     {
00017         private $level  = null;
00018         
00022         abstract protected function publish(LogRecord $record);
00023         
00027         public function setLevel(LogLevel $level)
00028         {
00029             $this->level = $level;
00030             
00031             return $this;
00032         }
00033         
00037         public function getLevel()
00038         {
00039             return $this->level;
00040         }
00041         
00045         final public function log(LogLevel $level, $message)
00046         {
00047             $this->logRecord(
00048                 LogRecord::create()->
00049                 setLevel($level)->
00050                 setMessage($message)
00051             );
00052             
00053             return $this;
00054         }
00055         
00059         final public function logRecord(LogRecord $record)
00060         {
00061             $levelMatches =
00062                 $this->level === null
00063                 || $record->getLevel()->getId() <= $this->level->getId();
00064             
00065             if ($levelMatches && $this->isLoggable($record))
00066                 $this->publish($record);
00067             
00068             return $this;
00069         }
00070         
00074         protected function isLoggable(LogRecord $record)
00075         {
00076             return true;
00077         }
00078         
00082         final public function severe($message)
00083         {
00084             $this->log(LogLevel::severe(), $message);
00085             
00086             return $this;
00087         }
00088         
00092         final public function warning($message)
00093         {
00094             $this->log(LogLevel::warning(), $message);
00095             
00096             return $this;
00097         }
00098         
00102         final public function info($message)
00103         {
00104             $this->log(LogLevel::info(), $message);
00105             
00106             return $this;
00107         }
00108         
00112         final public function config($message)
00113         {
00114             $this->log(LogLevel::config(), $message);
00115             
00116             return $this;
00117         }
00118         
00122         final public function fine($message)
00123         {
00124             $this->log(LogLevel::fine(), $message);
00125             
00126             return $this;
00127         }
00128         
00132         final public function finer($message)
00133         {
00134             $this->log(LogLevel::finer(), $message);
00135             
00136             return $this;
00137         }
00138         
00142         final public function finest($message)
00143         {
00144             $this->log(LogLevel::finest(), $message);
00145             
00146             return $this;
00147         }
00148     }
00149 ?>