PHP日志LOG类定义与用法示例


Posted in PHP onSeptember 06, 2018

本文实例讲述了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('Asia/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');
?>

运行程序,在当前目录下生成test.txt文件内容如下(这里是运行3次的结果):

09/06/18  14:56:20 test LOG::INFO myTest
09/06/18  14:56:21 test LOG::INFO myTest
09/06/18  14:56:22 test LOG::INFO myTest

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个简单的PHP入门源程序
Oct 09 PHP
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
php类中private属性继承问题分析
Nov 01 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
php操作xml
Oct 27 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
详解PHP中的null合并运算符
Dec 30 PHP
ThinkPHP中session函数详解
Sep 14 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
PHP实现的AES 128位加密算法示例
Sep 16 PHP
PHP实现断点续传乱序合并文件的方法
Sep 06 #PHP
php JWT在web端中的使用方法教程
Sep 06 #PHP
php进程daemon化的正确实现方法
Sep 06 #PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 #PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 #PHP
PHP使用pdo实现事务处理操作示例
Sep 05 #PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 #PHP
You might like
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
2016/08/03 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
python线程锁(thread)学习示例
2013/12/04 Python
浅析python中的分片与截断序列
2016/08/09 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
Python的Lambda函数用法详解
2019/09/03 Python
PyTorch预训练的实现
2019/09/18 Python
解决python 上传图片限制格式问题
2019/10/30 Python
python绘制雪景图
2019/12/16 Python
Python多线程thread及模块使用实例
2020/04/28 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
浅谈django channels 路由误导
2020/05/28 Python
django使用多个数据库的方法实例
2021/03/04 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
广播稿:校园广播稿范文
2019/04/17 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP