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 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
FCKeditor的安装(PHP)
Jan 13 PHP
php中$this-&amp;gt;含义分析
Nov 29 PHP
谷歌音乐搜索栏的提示功能php修正代码
May 09 PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
PHP二维关联数组的遍历方式(实例讲解)
Oct 18 PHP
php微信开发之关注事件
Jun 14 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 PHP
laravel 判断查询数据库返回值的例子
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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
图片完美缩放
2006/09/07 Javascript
DHTML Slide Show script图片轮换
2008/03/03 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
python爬取哈尔滨天气信息
2018/07/14 Python
python实现KNN分类算法
2019/10/16 Python
python入门之基础语法学习笔记
2020/02/08 Python
Python定义一个函数的方法
2020/06/15 Python
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
庆元旦文艺演出主持词
2014/03/27 职场文书
小学节能减排倡议书
2014/05/15 职场文书
安全环保标语
2014/06/09 职场文书
销售团队获奖感言
2014/08/14 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
先进党支部申报材料
2014/12/24 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
sqlserver连接错误之SQL评估期已过的问题解决
2022/03/23 SQL Server
使用Redis实现分布式锁的方法
2022/06/16 Redis