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模拟SQL Server的两个日期处理函数
Oct 09 PHP
PHP 创建标签云函数代码
May 26 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 PHP
5种PHP创建数组的实例代码分享
Jan 17 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
php数组去重复数据示例
Feb 25 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
PHP强制转化的形式整理
May 22 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
VFP与其他应用程序的集成
2006/10/09 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
php实现aes加密类分享
2014/02/16 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
Python读写unicode文件的方法
2015/07/10 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
python 实现矩阵填充0的例子
2019/11/29 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
思想品德自我评价
2014/02/04 职场文书
企业军训感想
2014/02/07 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
公司回复函格式
2015/07/14 职场文书