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 相关文章推荐
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
前端必学之PHP语法基础
Jan 01 PHP
PHP 数组基本操作小结(推荐)
Jun 13 PHP
详细解读php的命名空间(二)
Feb 21 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
PHP dirname简单使用代码实例
Nov 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
PHP开发中常用的字符串操作函数
2011/02/08 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
最短的IE判断代码
2011/03/13 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
百度搜索框智能提示案例jsonp
2016/11/28 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
从零学习node.js之简易的网络爬虫(四)
2017/02/22 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
python读写文件操作示例程序
2013/12/02 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
Python shelve模块实现解析
2019/08/28 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
DELPHI面试题研发笔试试卷
2015/11/08 面试题
毕业自我评价
2014/02/05 职场文书
2014个人年度工作总结
2014/12/15 职场文书
重温入党誓词主持词
2015/06/29 职场文书
任命书格式模板
2015/09/22 职场文书
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
ubuntu下常用apt命令介绍
2022/06/05 Servers