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
解决phpmyadmin中文乱码问题。。。
Jan 18 PHP
用php过滤危险html代码的函数
Jul 22 PHP
国外比较好的几个的Php开源建站平台小结
Apr 22 PHP
php array的学习笔记
May 16 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
php实现URL加密解密的方法
Nov 17 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
php生成HTML文件的类方法
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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
ThinkPHP的L方法使用简介
2014/06/18 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
简述php环境搭建与配置
2016/12/05 PHP
XML的代替者----JSON
2007/07/21 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python中有趣在__call__函数
2015/06/21 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
Django的Modelforms用法简介
2019/07/27 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
python 制作简单的音乐播放器
2020/11/25 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
蔬菜基地的创业计划书
2014/01/06 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
2014年保管员工作总结
2014/11/18 职场文书
新入职员工工作总结
2015/10/15 职场文书
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技