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 相关文章推荐
一个简单的MySQL数据浏览器
Oct 09 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
php+ajax实现无刷新分页
Nov 18 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
php实现将二维关联数组转换成字符串的方法详解
Jul 31 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
Aug 11 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
php用户名的密码加密更安全的方法
Jun 21 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获取数组最后一个值的2种方法
2015/01/21 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
js单例模式详解实例
2013/11/21 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
python绘制规则网络图形实例
2019/12/09 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
质量月口号
2014/06/20 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
Python Pandas解析读写 CSV 文件
2022/04/11 Python