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应用程序来获取Web服务器的状态信息
Oct 09 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
thinkphp实现多语言功能(语言包)
Mar 04 PHP
PHP简单实现HTTP和HTTPS跨域共享session解决办法
May 27 PHP
php基于session实现数据库交互的类实例
Aug 03 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
PHP实现大数(浮点数)取余的方法
Feb 18 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP代码加密的方法总结
Mar 13 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图片验证码制作实现分享(全)
2012/05/10 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php获取文件大小的方法
2014/02/26 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
Prototype Function对象 学习
2009/07/12 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
2015/01/23 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
nodejs环境使用Typeorm连接查询Oracle数据
2019/12/05 NodeJs
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
学习python (2)
2006/10/31 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
婚礼证婚人证婚词
2014/01/13 职场文书
安全大检查反思材料
2014/01/31 职场文书
模特大赛策划方案
2014/05/28 职场文书
司法助理专业自荐书
2014/06/13 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
2015年统战工作总结
2015/05/19 职场文书
详解Java实现数据结构之并查集
2021/06/23 Java/Android
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技