PHP LOG类 使用心得

<?php
/**
* PHP log 类  
*/
class Config{
   public static function getConfig (){
      return array(
           'LOG_FILE'=>'test.txt', 
           'LOG_LEVEL'=>75  //INFO
      );
   }
}
class Log{
  
    private $LogFile;
    private $logLevel;

    const DEBUG  = 100;
    const INFO   = 75;
    const NOTICE = 50;
    const WARNING =25;
    const ERROR   = 10;
    const CRITICAL = 5;
    
    private function __construct(){
       
        $cfg = Config::getConfig();    
        $this->logLevel = isset($cfg['LOG_LEVEL']) ? $cfg['LOG_LEVEL']:LOG::INFO;
        if(!isset($cfg['LOG_FILE']) && strlen($cfg['LOG_FILE'])){
            throw new Exception('can\'t set file to empty');
        }
        $this->LogFile = @fopen($cfg['LOG_FILE'],'a+');
        if(!is_resource($this->LogFile)){
            throw new Exception('invalid file Stream');
        }
        
    }

    public static function getInstance(){
       
        static $obj;
        if(!isset($obj)){
            $obj = new Log();
        }
        return $obj;
    }

    public function LogMessage($msg, $logLevel = Log::INFO,$module = null){
        
        if($loglevel > $this->logLevel){
            return ;
        }

        date_default_timezone_set('Asian/shanghai');

        $time = strftime('%x  %X',time());
        $msg = str_replace("\t",'',$msg);
        $msg = str_replace("\n",'',$msg);
        
        $strLogLevel = $this->levelToString($logLevel);
        
        if(isset($module)){
            $module = str_replace(array("\n","\t"),array("",""),$module);
        }
        $logLine = "$time\t$msg\t$strLogLevel\t$module\r\n";
        fwrite($this->LogFile,$logLine);
    }

    public function levelToString($logLevel){
         $ret = '[unknow]';
         switch ($logLevel){
                case LOG::DEBUG:
                     $ret = 'LOG::DEBUG';
                     break;
                case LOG::INFO:
                     $ret = 'LOG::INFO';
                     break;
                case LOG::NOTICE:
                     $ret = 'LOG::NOTICE';
                     break;
                case LOG::WARNING:
                     $ret = 'LOG::WARNING';
                     break;
                case LOG::ERROR:
                     $ret = 'LOG::ERROR';
                     break;
                case LOG::CRITICAL:
                     $ret = 'LOG::CRITICAL';
                     break;
         }
         return $ret;
    }
}
$logIns = LOG::getInstance();
//print_r($logIns);
$logIns->logMessage("test",LOG::INFO,'myTest');
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值