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.MVC的模板标签系统(二)
Sep 05 PHP
详解:――如何将图片储存在数据库里
Dec 05 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
Php 构造函数construct的前下划线是双的_
Dec 08 PHP
PHP获取数组中某元素的位置及array_keys函数应用
Jan 29 PHP
thinkphp 多表 事务详解
Jun 17 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
thinkPHP5.0框架模块设计详解
Mar 18 PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 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
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
PHP数组排序之sort、asort与ksort用法实例
2014/09/08 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
jQuery中extend函数详解
2015/02/13 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
jQuery实现限制文本框的输入长度
2017/01/11 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
原生实现一个react-redux的代码示例
2018/06/08 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
详解django.contirb.auth-认证
2018/07/16 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
Numpy 多维数据数组的实现
2020/06/18 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
二手房买卖协议书
2014/04/10 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
土建技术员岗位职责
2015/04/11 职场文书
岗位聘任协议书
2015/09/21 职场文书
七年级英语教学反思
2016/02/15 职场文书