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 移除数组重复元素的一点说明
Nov 27 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
php之Memcache学习笔记
Jun 17 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
php实现图片缩放功能类
Dec 18 PHP
php页面函数设置超时限制的方法
Dec 01 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
PHP根据图片色界在不同位置加水印的方法
Jul 01 PHP
Smarty最简单实现列表奇偶变色的方法
Jul 01 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
使用PHP开发留言板功能
Nov 19 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中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
用JavaScript脚本实现Web页面信息交互
2006/10/11 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
python编程开发之类型转换convert实例分析
2015/11/13 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
几个常见的软件测试问题
2016/09/07 面试题
个人欠款担保书
2014/05/20 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
教师聘用意向书
2015/05/11 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
Redis基本数据类型String常用操作命令
2022/06/01 Redis