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
Smarty结合Ajax实现无刷新留言本实例
Jan 02 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
php实现rc4加密算法代码
Apr 25 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
php不用正则验证真假身份证
Nov 06 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
Apr 23 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
php 获取xml接口数据的处理方法
May 31 PHP
laravel model 两表联查示例
Oct 24 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
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
javascript 获取所有id中包含某关键字的控件的实现代码
2010/11/25 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
JavaScript中的lastIndexOf()方法使用详解
2015/06/06 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
微信小程序 MINA文件结构
2016/10/17 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
2017/11/20 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
vue实现动态添加数据滚动条自动滚动到底部的示例代码
2018/07/06 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
2014/07/11 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
python3个性签名设计实现代码
2018/06/19 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Python列表操作方法详解
2020/02/09 Python
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
error和exception有什么区别
2012/10/02 面试题
C#中的验证控件有几种
2014/03/08 面试题
企业优秀员工事迹材料
2014/05/28 职场文书
任命书怎么写
2015/03/02 职场文书