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在字符断点处截断文字的实现代码
Apr 21 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
深入理解PHP中的global
Aug 19 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 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
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
PHP中的事务使用实例
2015/05/26 PHP
PHP中常用的魔术方法
2017/04/28 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
Javascript的&amp;&amp;和||的另类用法
2014/07/23 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
python实现爬虫下载美女图片
2015/07/14 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
结构工程个人自荐信范文
2013/11/30 职场文书
成人继续教育实施方案
2014/03/01 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
Python编写冷笑话生成器
2022/04/20 Python