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高级对象构建 工厂模式的使用
Feb 05 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
php中生成随机密码的自定义函数代码
Oct 21 PHP
php运行时动态创建函数的方法
Mar 16 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
php smtp实现发送邮件功能
Jun 22 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php查看session内容的函数
2008/08/27 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
php检测文件编码的方法示例
2014/04/25 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
php异常处理捕获错误整理
2019/09/23 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
js中document.write的那点事
2014/12/12 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
微信小程序实现简单的select下拉框
2020/11/23 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
python简单贪吃蛇开发
2019/01/28 Python
详解python数据结构和算法
2019/04/18 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
python selenium xpath定位操作
2020/09/01 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
GWT的应用有哪两种部署模式
2012/12/21 面试题
公司授权委托书格式范文
2014/10/02 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android