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输出Excel文件类
Feb 08 PHP
9个PHP开发常用功能函数小结
Jul 15 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
解析php中memcache的应用
Jun 18 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
浅谈ThinkPHP的URL重写
Nov 25 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
php图形jpgraph操作实例分析
Feb 22 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 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 chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
2016/01/18 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
Python封装shell命令实例分析
2015/05/05 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python绘制简单彩虹图
2018/11/19 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2021/02/20 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
策划助理岗位职责
2013/11/18 职场文书
初婚未育证明
2014/01/15 职场文书
五年级下册复习计划
2015/01/19 职场文书
自我检讨书范文
2015/01/28 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
关于vue-router-link选择样式设置
2022/04/30 Vue.js
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android
DQL数据查询语句使用示例
2022/12/24 MySQL