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采集相关教程之一 CURL函数库
Feb 15 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
很让人受教的 提高php代码质量36计
Sep 05 PHP
PHP 使用MySQL管理Session的回调函数详解
Jun 21 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
PHP如何实现Unicode和Utf-8编码相互转换
Jul 29 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
May 26 PHP
PHP如何获取Cookie并实现模拟登录
Jul 16 PHP
PHP 99乘法表的几种实现代码
Oct 13 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
东方红 - 来复式再生机的修复
2021/03/02 无线电
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
一些关于PHP的知识
2006/11/17 PHP
php+mysqli使用预处理技术进行数据库查询的方法
2015/01/28 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
皮肤科医师岗位职责
2013/12/04 职场文书
创先争优活动方案
2014/02/12 职场文书
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
抗洪救灾标语
2014/10/08 职场文书
2015年超市工作总结
2015/04/09 职场文书
公司2015年终工作总结
2015/05/26 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js